我做了一個奇怪的錯誤,我不喜歡的東西如下:SQL Server 2008中沒有空
SELECT *
FROM table1
WHERE NAME COLLATE LATIN1_General_CI_AS NOT IN (select name FROM table2)
Name
是nvarchar(50)
null
。 Table2
在name
列中的值爲null
。然後,由於值爲null
,它會匹配table2
中不存在的名稱。這意味着這將返回0
結果。如果我這樣做:
SELECT *
FROM table1
WHERE NAME COLLATE LATIN1_General_CI_AS NOT IN (
select name FROM table2 where name is not null
)
我會得到一些結果。
一個表具有校對Danish_Norwegian_CI_AS
和另一個latin1
。也許COLLATE
是問題的根源?
誰能解釋爲什麼出現這種情況?也許有套理論的東西?