在拼写SQL时,经常遇到写一些查询条件进行数字的比较,但数据表中存储的字段类型是varchar或char之类的字符型,这时,可以使用to_number()函数来处理该字段。
例如:SQL语句如下
select * from table_a where a > 100
如果此时a字段在表中是varchar类型的话,就会报’无效数字’错误。
当然如果保证不报错的话,可以这么写:
select * from table_a where a > ‘100’
但这样查出的数据肯定是不准确的,如果表中字段a存在数据’2’,那么也会被检索出来。
那么可以改写sql语句为:
select * from table_a where to_number(a) < 100
但有时候会发现,这样也会报’无效数字’的错误。原因是,表中a字段的数据存在非数字类型的数据,要想保证正常查询,必须保证a字段的数据都是字符类型的数字。