1. 程式人生 > 其它 >sqlserver 中guid 型別表字段查詢導致的問題

sqlserver 中guid 型別表字段查詢導致的問題

現象:
1 sqlserver 有表a, 有id 和parentid兩個欄位。 id為uniqueidentifier 型別,即guid型別。預設值為newsequentialid() 。 parentid為字串型別。

2 a表資料為 id值為6c75c497-76e8-eb11-9d5d-6045cba80309 。parentid值6c75c497-76e8-eb11-9d5d-6045cba803097 (parentid的值比id的值多了一個7)

3 注意guid的值 執行語句 select * from a where id='6c75c497-76e8-eb11-9d5d-6045cba80309ppppppppppppp7' 可以查詢出記錄
執行 select * from a where parentid='6c75c497-76e8-eb11-9d5d-6045cba803097' 可以查詢出記錄
執行 select * from a where parentid='6c75c497-76e8-eb11-9d5d-6045cba80309' 可以查詢出記錄

4 可以看出來sqlserver執行查詢的時候,對於guid型別的欄位,會自動擷取固定長度,然後再查詢。比如你的guid的字串輸錯了,變成37位,只要你前32位正確,依然可以查出結果。
字串型別的欄位,就不會如此,會按完全匹配來查詢。


作者:過錯
出處:http://www.cnblogs.com/wang2650/
關於作者:net開發做的久而已。十餘年時光虛度!
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線。如有問題,可以郵件:[email protected]

 聯絡我,非常感謝。