问。在 Words 中显示数值,输出应如下所示
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
在这里做什么?有人对这个查询有任何想法吗?
最佳答案
那么查询是如何工作的呢?原因如下:
select to_char(to_date(:number,'j'),'jsp') from dual;
如果你查看查询 to_date(:number,'j') 的最内部部分,'j' 或 J 是儒略日期(公元前 4713 年 1 月 1 日),基本上这个日期用于天文学研究.
所以 to_date(:number,'j') 它采用 number 表示的数字并假装它是儒略日期,转换为日期。
如果您将 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;
//输出:244.7834
关于sql - 如何用文字显示数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16123413/