sql - 如何用文字显示数值

标签 sql oracle type-conversion to-date to-char

问。在 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/

相关文章:

php - SQL 计算多列中的某些值

mysql - Select 语句给出不同的记录集

linux - 如何从结果集中创建文件?

将 signed int 转换为 unsigned short,在 C 中将负值设置为零

python - 查询集 : LEFT JOIN with AND

c# - CommandText 属性未初始化

sql - 删除oracle表: size is 389 GB中的重复记录

sql - Oracle 中的强制可编辑 View

c - 为什么将某个short 转换为double 等于4004 位数字?

c++ - 如何在 C++ 运行时确定数据类型?