好的,我有一个包含三列的表格:
Id, Key, Value
我想删除 Value
为空的所有行 (''
)。因此,我在删除之前编写了要选择的查询:
从 [Imaging.ImageTag] 中选择 *,其中 [Value] = ''
到目前为止一切都相当标准...
现在奇怪的部分来了。此查询返回如下所示的两行,并用逗号分隔列:
CE7C367C-5C4A-4531-9C8C-8F2A26B1B980, ObjectType, 🎃
F5B2F8A8-C4A8-4799-8824-E5FFEEDAB887, Caption, 🍰
为什么这两行在 ''
上匹配?
额外信息
我正在使用 Sql-Server,[Value]
列的类型为 NVARCHAR(300)
,是的,表名称确实是 [Imaging.ImageTag ]
最佳答案
这取决于排序规则。
匹配空字符串
SELECT 1 where N'' = N'🍰' COLLATE latin1_general_ci_as
不匹配空字符串
SELECT 1 WHERE N'' = N'🍰' COLLATE latin1_general_100_ci_as
100
排序规则更加最新(尽管仍然不是最先进的,它们自 2008 年以来就已可用),并且您应该使用更现代的排序规则,除非您有某些特定原因不这样做。 The BOL entry for 100 collations特别呼吁
Weighting has been added to previously non-weighted characters that would have compared equally.
关于sql-server - SQL 查询Where Column = '' 返回表情符号字符 🎃 和 🍰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47551528/