【发布时间】:2012-01-17 01:50:54
【问题描述】:
我在执行以下操作时遇到了一个奇怪的错误:
SELECT *
FROM table1
WHERE NAME COLLATE LATIN1_General_CI_AS NOT IN (select name FROM table2)
Name 是 nvarchar(50) null。 Table2 在 name 列中有 null 值。然后它将匹配 table2 中不存在的名称,因为 null 值。这意味着这将返回 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 是问题的根源?
谁能解释为什么会这样?也许有集合论的东西?
【问题讨论】:
标签: sql sql-server sql-server-2008 collation