今天修改一個前人的程序,一段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
高天賜 閱讀(519)
評論(0) 編輯 收藏