select *from table where to_number(字段)<25
这样写就出错,怎么办
追答是不是你的这一列包含有非数值型的数据,比如英文字母,_%&*等符号?
追问有空值
追答select *from table where to_number(NVL(字段,'0'))<25
追问select 后面加一个 *
追问哦对
运行以下语句,找出Z5_HD列中包含有非法字符的记录:
select * from z_jczb_lunyuanjiance where translate(z5_hd,'$1234567890','$') is not null
执行失败:ORA-00911: invalid character
select * from Z_JCZB_LUNYUANJIANCE where TRANSLATE(Z5_HD,'$1234567890',$)is not null
select * from Z_JCZB_LUNYUANJIANCE where TRANSLATE(Z5_HD,'$1234567890','$')is not null
追问数据库有很多沈这样的数据想查询25以下的数据
追答这不是刚才我给你的语句的运行结果吧?
追问不是
最后的照片是数据库的数据
追答你把刚才我给你的语句运行以下,看一下语句有没有结果。如果有结果,是没办法比较的,必须数据清理后再比较。
追问把$用单引号引起来:
select * from Z_JCZB_LUNYUANJIANCE where TRANSLATE(Z5_HD,'$1234567890','$')is not null
再执行一下这条语句看一下结果:
select * from Z_JCZB_LUNYUANJIANCE where TRANSLATE(Z5_HD,'$1234567890.','$')is not null
好
看见了吗,查询出来的Z5_HD列有非数值型的数据,无法比较
追问这些数据都是以前的
如果是最近1个月的就行
我试试谢谢
追答select *from z_jczb_lunyuanjiance where to_number(z5_hd)<25 and sysdate-riqi<=30
试一下
select * from (select * from z_jczb_lunyuanjiance where where sysdate-riqi<=30) A where to_number(z5_hd)<25
追问3个where可以吗?
执行失败:ORA-00936: missing expression
select * from (select * from Z_JCZB_LUNYUANJIANCE where where sysdate-RIQI<=30) A where to_number(Z5_HD)<25
能不能排除不能转换的数据
追答select * from (select * from Z_JCZB_LUNYUANJIANCE where sysdate-RIQI<=30) A where to_number(Z5_HD)<25
或者排除非法数据:
select * from (select * from Z_JCZB_LUNYUANJIANCE where TRANSLATE(Z5_HD,'$1234567890.','$') is null) A where to_number(Z5_HD)<25
执行失败:ORA-01722: invalid number
select * from (select * from Z_JCZB_LUNYUANJIANCE where TRANSLATE(Z5_HD,'$1234567890.','$') is null) A where to_number(Z5_HD)<25
这个没转换数字也可以查,貌似结果还是对的
字符串比较应该不会是对的吧
追答字符串比较有可能结果是错误的,比如字符串:241.56比25.5小
追问用to_number就失败呢
从第一个结果看,里面没有特殊字符
追答select * from (select * from Z_JCZB_LUNYUANJIANCE where TRANSLATE(Z5_HD,'$1234567890.','$') is null) A where to_number(Z5_HD)<25
这个语句试一下
要不我查出全部用java转换int
真找不到人帮忙了,感谢
可以加您QQ可以吗
从来没用过函数
在sql里面运行就失败
您看这个行吗?
本回答被网友采纳数据里面大部分是能转换的
有一下是输入不规范有特殊字符
select *from z_jczb_lunyuanjiance where to_number(z5_hd)<25
我想把能转换的查出来
把不能转换的查出来