posts - 3,comments - 1,trackbacks - 0
今天修改一个前人的程序,一段sql文,里面的内容一个很奇怪的地方,
SELECT
  .
  ..
FORM
   TABLE1 A,
   TABLE2 B
WHERE
   A.FROMID 
= B.TOID
   
AND ..
   
AND .


这里面a表中的FromId 是char(8),b表中的toId是char(9) 一开始感觉这能出来数据吗 可真他娘的出来了,晕!!!,公司不让上网,看书找不到介绍,自己慢慢猜测,一定是oracle自动给位数小的补足了空格。
回到家里上网查了一下,找到答案了,大概摘录一下,给自己以后提个醒,如果有什么不对的地方希望那个大家批评指教!!!

Oracle使用以下两种比较规则:
1、空格补齐比较语法
对于类型CHAR、NCHAR、text literals、USER函数值, 在进行比较时, 先在较短的那个
字符串后补上空格以使长度相等, 然后再进行比较. 注意b.toId = ‘12345678’也会是true的
2、非补齐比较语法
对于类型VARCHAR2、NVARCHAR2, 则不用补齐, 直接进行比较.

posted on 2010-07-20 06:15 高天赐 阅读(484) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: