Q值。在单词中显示数字值,输出应该如下所示
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
在这做什么?有人对这个查询有任何想法吗?
答案 0 :(得分:2)
那么查询是如何工作的?那么这就是原因:
select to_char(to_date(:number,'j'),'jsp') from dual;
如果你查看查询的最内部部分to_date(:number,'j'),'j'或J是朱利安日期(公元前4713年1月1日),基本上这个日期用于天文研究
所以to_date(:number,'j')取数字所代表的数字并假装它是朱利安日期,转换成日期。
如果您将3传递给数字,那么它将日期转换为公元前4713年1月3日,这意味着将3添加到Julian日期。
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
使用Julian日期时有一个限制,范围从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;
//输出:两百四十四万七千八百三十四
答案 1 :(得分:0)
我从未听说过具有内置函数的DBMS可以按照您的要求进行操作。您需要一个数字名称表,使用模运算连接到每个数字一次,并使用字符串连接来生成一个In_Words列。加上一些消除前导零的逻辑。写作需要时间。
答案 2 :(得分:0)
J代表朱利安日 - 自公元前4712年1月1日以来的天数。表格中的数字转换为Julian日期。 JSP说明了日期:
SELECT to_char(SYSDATE,'JSP') AS number_of_days_sinse_4712_BC
FROM dual
/
答案 3 :(得分:0)
将十进制数转换为单词,您可以按照下面的代码
SELECT TO_CHAR(to_date(TRUNC(num),'J'),'Jsp')
||' and '
|| TO_CHAR(to_date(to_number(SUBSTR(num-TRUNC(num),instr(num-TRUNC(num),'.')+1)),'J'),'Jsp') Indicator
FROM
(SELECT &enter_numbr num FROM dual
);
希望这会有所帮助!!!