Q.以Word格式显示数值,输出应如下所示
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
在这里做什么?有人知道这个查询吗?
4条答案
按热度按时间tjrkku2a1#
那么查询是如何工作的呢?原因如下:
如果你查看查询的最里面的部分to_date(:number,'j'),'j'或J是儒略日期(公元前4713年1月1日),基本上这个日期被用于天文学研究。
所以to_date(:number,'j')它取number所代表的数字并假装它是一个儒略历日期,转换成一个日期。
如果将3传递给number,那么它会将日期转换为公元前4713年1月3日,这意味着儒略日期增加了3。
现在到字符(到日期(3,'j'),'jsp'),jsp =现在;取日期(to_date(3,'j'))并拼写它所代表朱利安数,输出为:
使用儒略日期时有一个限制,它的范围从1到5373484。这就是为什么如果您将值放在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年提出了儒略日数,它是由“约瑟夫Scaliger”:
http://en.wikipedia.org/wiki/Joseph_Justus_Scaliger
这是没有意义的,我继续repeting什么另一个作者在这些网站上做了,这就是为什么我只是张贴链接,你可以访问他们,并阅读你需要了解如何查询这样的工作:
//输出:二百四十四万七千八百三十四
5lhxktic2#
我从来没有听说过一个DBMS有一个内置的函数来完成你的要求。你需要一个数字名称表,用模算术和字符串连接来产生一个In_Words列。加上一些逻辑来消除前导零。这需要花时间来写。
ryhaxcpt3#
J代表儒略日-自公元前4712年1月1日以来的天数。表中的数字将转换为儒略日期。JSP会拼写出该日期:
vom3gejh4#
要将十进制数字转换为单词,可以执行以下代码
希望这对你有帮助!