我們面臨一個非常奇怪的問題。varbinary中的inserint值時出現重複問題
我們有我們的MSSQL 2008 R2的DB一個表時,表列是如下:
- 用戶id - 詮釋
- 用戶名 - VARBINARY(256)
- USERTYPE - 詮釋
和userName列是唯一的
我們prefor m以下再次查詢該表:
insert into table_name (userId, userName, userType) values (1 , 0x5942C803664B00, 0)
和查詢,我們做了以下查詢後:
insert into table_name (userId, userName, userType) values (2 , 0x5942C803664B, 0)
,我們得到以下錯誤:
Cannot insert duplicate key row in object 'table_name ' with unique index 'table_name _userName_u'.
雖然0x5942C803664B和0x5942C803664B00是不同的值
有什麼想法?
您是否發佈了導致問題的確切用戶名。我無法使用您的值複製此錯誤。 http://sqlfiddle.com/#!3/2faf2/1 – GarethD 2013-04-25 09:19:01
@GarethD你做得不對。您正在將一個字符串投射到varbinary。如果你看看你的小提琴結果(第一選擇),你可以看到兩個',48,48',它們是兩個字節,序數值48代表ASCII字符「0」。那些不是字節0x00。試試這個,而不是'INSERT T VALUES(0x5942C803664B00),(0x5942C803664B);' – RichardTheKiwi 2013-04-25 09:24:56
哇。顯然我需要更多的咖啡,並且可能會仔細檢查我今天上午所做的一切,因爲這是一個非常基本的錯誤......哎呀。 – GarethD 2013-04-25 09:52:52