【发布时间】:2023-04-06 19:37:01
【问题描述】:
好的,所以我有一个包含三列的表格:
Id, Key, Value
我想删除 Value 为空的所有行 ('')。因此,我在删除之前编写了要选择的查询:
Select * from [Imaging.ImageTag] where [Value] = ''
到目前为止一切都很标准......
现在是奇怪的部分。此查询返回如下所示的两行,以逗号分隔列:
CE7C367C-5C4A-4531-9C8C-8F2A26B1B980, ObjectType, ????
F5B2F8A8-C4A8-4799-8824-E5FFEEDAB887, Caption, ????
为什么这两行在'' 上匹配?
额外信息
我正在使用 Sql-Server,[Value] 列的类型是 NVARCHAR(300),是的,表名确实是 [Imaging.ImageTag]
【问题讨论】:
-
您使用的是什么数据库平台以及
Value的确切类型是什么? -
你能做这样的事情吗:
Select *, CAST([value] as VARBINARY) from [Imaging.ImageTag] i where [Value] = ''(SQLServer 表示法..)并展示给我们看?我怀疑构成表情符号的任何字节都被比较天真地视为等于空字符串,可能是因为它们以 ascii nul 0x00 开头.. (也许表情符号正在转换为 ascii 进行比较,并且转换正在将其减少为 '') -
在 SQL Server 中,我的默认排序规则
SELECT 1 where '' = N'????'返回 1 - 因此它出于某种原因匹配空字符串。 -
...这些表情符号真的是坏吗?我希望我在工作中的问题是丰富多彩的^ ^
-
[Imaging.ImageTag]看起来不对。你真的有一张名为"Imaging.ImageTag"的表吗?
标签: sql-server tsql unicode collation supplementary