2013-04-20 24 views
0

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

閱讀:http://viralpatel.net/blogs/convert-number-into-words-oracle -sql-query/ – 2013-04-20 17:56:18

+0

好的......我按照步驟進行,然後if ound'to_date(sal,'j')'返回'09-FEB-08'爲'1500'。但是,那個帖子說,它會增加到「公元前4713年1月1日」。現在,這意味着什麼? – Ravi 2013-04-20 18:06:23

回答

2

那麼查詢是如何工作的?那麼這裏的原因:

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

如果你看看到查詢TO_DATE內大部分(:數字,「J」)的「J」或J是儒略日(1月1日,從公元前4713),基本上這個日期已被用於天文學研究。

所以to_date(:數字,'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 =現在;採取日期(TO_DATE(3,「J」))和拼寫它代表朱利安數,輸出是:

TO_CH 
----- 
three 

有一個限制,而使用儒略曆日期,取值範圍爲1至5373484.這就是爲什麼如果你把值5373484後,如下圖所示,它將引發你的錯誤:

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

大家好,有趣的是這個話題。我記得2005年我在學習Oracle時,其中一位講師要求我編寫一個PL/SQL代碼來轉換數字,這是一個完整的兩頁代碼。

下面是一些可以幫助我們理解Julian日的參考資料,這就是爲什麼我們在此操作過程中使用字母'j'或'J'。

首先有一個網站,有關於「如何轉換數爲單詞使用Oracle SQL查詢」的例子和解釋:如果你想知道更多關於「儒略日」

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

二請訪問:

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

第三,如果你想知道更多關於誰於1583年提出的儒略日數,它是由「約瑟夫凱利格」:

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

它不是讓SENCE我繼續repiting什麼在這些網站的另一位作者已經提出,這就是爲什麼我剛剛發佈,您可以訪問它們,讀你需要了解哪些環節如何查詢像這樣的作品:

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

//輸出:雙萬447834

0

我從來沒有聽說過一個內置函數的數據庫管理系統可以按照你的要求去做。您需要一個數字名稱表,使用模算術將每個數字連接到該數字,並通過字符串連接來生成一個In_Words列。再加上一些邏輯消除前導零。寫作需要時間。

0

J代表Julian日 - 自公元前4712年1月1日以來的天數。表格中的數字轉換爲儒略日期。 JSP拼出日期:

SELECT to_char(SYSDATE,'JSP') AS number_of_days_sinse_4712_BC 
    FROM dual 
/
+0

你的意思是......'JSP'只是拼寫日期?如果是這樣,那麼產出應該是二三十四二千三十而不是兩百萬四千四百四千。 – Ravi 2013-04-23 18:21:06

+0

是的。 JSP:J-Julian將整數轉換爲日期。這是公元前4712年1月1日以來的天數:兩百萬四百......這是公元前4712年1月1日至今的多少天。和SP - 拼寫它。它建立在Oracle功能中。 – Art 2013-04-23 18:33:45

+0

是的..我有你,但我的問題是,如果是日期,那麼輸出應該是二三十四,二千十三,不是嗎? – Ravi 2013-04-23 18:37:40

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 
); 

希望這將幫助!