select 1 from lshspz where f_pzbh > 110012260
能查出数据来
select 1 from lshspz where f_jzfx >0
直接报 invalid number错误
咋回事?这两个字段均是varchar2型的
f_pzbh varchar2(9)
f_jzfx varchar2(1)
我就十分纳闷啦!
老大,你应该好好学学oracle自动类型转换了,不过谢谢你!
追答Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推。
字符串和数字进行操作是会报异常的,因为类型不一样不能进行比较。
Oracle在执行SQL的时候有些时候会自动转换,比如:
select * from chan_customer cc where cc.customer_id = '1';
即使customer_id是数字型的也可以查出来,但是Oracle有区分字符和数字
就是通过加不加单引号来区分。
你这个是别人说的,我也看过。不过我知道答案了,谢谢啦。也不是你说的转换成ascII码进行比较的,不信你可以试试 select '0'-5 from dual 到底应该是多少,O(∩_∩)O哈哈~ 那个问题我知道原因了,谢谢你了!
追答那个是什么原因
追问楼下是正解!
来自:求助得到的回答老大,问题是
select 1 from lshspz where f_pzbh > 110012260
可以查出数据来