今天修改一个前人的程序,一段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
高天赐 阅读(500)
评论(0) 编辑 收藏