一尘不染

如何用字显示数字值

sql

问:在单词中显示数字值,输出应如下所示

SAL        In_Words
--------- -----------------------------------------------------
800       eight hundred
1600      one thousand six hundred
1250      one thousand two hundred fifty

而且,我仍然不知道该查询如何解决上述输出问题。

select sal, to_char(to_date(sal,'j'),'Jsp') in_words from emp

to_date是做什么的?任何人对此查询有任何想法吗?


阅读 185

收藏
2021-05-05

共1个答案

一尘不染

那么查询如何工作?好吧,这是为什么:

select to_char(to_date(:number,'j'),'jsp') from dual;

如果查看查询to_date(:number,’j’)的最内部分,则``榡’‘或J是儒略日(Julian
Date)(公元前4713年1月1日),基本上该日期已用于天文学研究。

因此,to_date(:number,’j’)接受由数字表示的数字,并假装这是一个儒略日,将其转换为日期。

如果将3传递给数字,则它将日期转换为公元前4713年1月3日,这意味着将3添加到儒略日期。

select to_char(to_date(3,'j'),'jsp') from dual;

现在to_char(to_date(3,’j’),’jsp’),jsp = Now;
取那个日期(to_date(3,’j’))并拼写它代表的朱利安数字,输出为:

TO_CH
-----
three

使用儒略日期时有一个限制,范围从1到5373484。这就是为什么如果将值放在5373484之后,则会引发错误,如下所示:

ORA-01854: julian date must be between 1 and 5373484

大家好,这个话题很有趣。我记得2005年我在学习Oracle时,一位教员要求我编写一个PL / SQL代码以转换单词中的数字,这是一整页的两页代码。

这里有一些参考资料可以帮助我们理解儒略日,这就是为什么我们在此操作中使用字母“ j”或“ J”的原因。

首先,有一个网站提供有关“如何使用Oracle SQL查询将数字转换为单词”的示例和说明:

http://viralpatel.net/blogs/convert-number-into-words-oracle-sql-
query/

其次,如果您想进一步了解“朱利安日”,请访问:

http://en.wikipedia.org/wiki/Julian_day

第三,如果您想进一步了解谁提出了1583年的儒略日数,它是由“约瑟夫·斯卡利杰”(Joseph Scaliger)撰写的:

http://en.wikipedia.org/wiki/Joseph_Justus_Scaliger

对我而言,继续在这些网站上发表其他作者的言论并没有意义,这就是为什么我刚刚发布了可以访问它们的链接并阅读了您所需要的内容,以了解像这样的查询是如何工作的:

SELECT TO_CHAR (TO_DATE (2447834, 'j'), 'jsp') FROM DUAL;

//输出:24.478.438万

2021-05-05