p varchar2(20)
if(p between '1' and '400')then
    ......
end if;为什么象8,41,55..这样的数不能符合条件。而其他的(如199,400,233..)又可以?
如果改成if(p betweent 1 and 400) then
这样就完全对了,加单引号是怎么判断的??请高手指点指点!!!

解决方案 »

  1.   

    因为字符和数字的判断规则不一样,
    字符从第一个字符开始对比,‘8’>‘4’,所以‘81’>‘400’
    如果第一个字符相同,就再对比第二个字符,所以‘41’>‘400’p betweent 1 and 400 这句话,ORACLE会隐式的帮你把P转换成数字,再跟1和400来比较
    这样81<400
      

  2.   

    sasacat(傻傻猫) 
    非常感谢你的解答~~3Q