作者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/cn.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