作者erho (ptt訪客)
看板Database
標題[SQL ] 請問使用to_number字串轉數字的錯誤
時間Tue Jan 13 18:41:03 2015
資料庫名稱:oracle
資料庫版本:9i
內容/問題描述:
table A有一個column為 atable varchar(190)
輸入 select substr(atable,121,7) from table A;
的結果為
0001236
0000782
0000107
0000227
0001489
我使用想讓輸出的結果為
1236
782
107
227
1489
使用TO_NUMBER函式都回應ORA-01722: invalid number
select to_number('substr(atable,121,7)') from table A
請教各位大大這個語法的問題在那裡,望賜教
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.124.224
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Database/M.1421145666.A.C48.html
1F:推 anchime: to_number(‘1’||‘substr(atable,121,7)’) - 1000000 01/13 19:14
2F:→ anchime: 更正 '1' || .... 01/13 19:16
好方法,用前面加1的方式在用運算式轉為數值
實做後也不需to_number函式
1 || substr(atable,121,7)-10000000查詢結果便是數字型態
謝謝anchime的不吝提示
※ 編輯: erho (122.117.124.224), 01/14/2015 09:26:19
3F:→ pooznn: 用LTRIM('000123', '0') 不行嗎? 01/14 11:25
若用pooznn的方法,
雖然一樣為123,
但查詢結果型態依然為文字,
但如果以anchime的作法可同時轉為數字形態,
可搭配數字運算如sum,avg等函數在做進一步運算
※ 編輯: erho (122.117.124.224), 01/15/2015 11:54:20
4F:推 benqm300: 為什麼to_number(),裡面要用'',來包住substr的語法? 03/21 15:28