在SQL Server 2008 R2中比较NVarchar字段

| 我在声明为
nvarchar(50)
的表中有2个字段。在一些记录中,该字段具有看起来相同的值。但是,当我使用where子句“ 1”运行查询时,会发现字段是不同的。我尝试使用where子句
ltrim(rtrim(field1)) <> ltrim(rtrimfield2))
,但仍然发现有区别。我很沮丧! 提前致谢。     
已邀请:
        当您使用不同语言的相似字母时,可能会发生这种情况。您无法在眼睛上认出它们,但有所不同... 例如,这是英文和Ελληνικά(Ellas)中的所有字母,有些看起来相同,但不同。 o <>ο Y <>Υ A <>Α E <>Ε 其他一些虽然很小但明显不同 u <>υ p <>ρ 我<>ι 因此,这个\'word \'与\'o \'上的\'w \ rd \'是不同的,但是您看不到它。 ps我认为是这个问题,因为您说“记录很少”     
        除了@Aristos所说的以外,还可能是不间断空格(U + 00A0)或零宽度空格(U + 200B)之类的字符,这些字符未用by3ѭ/
RTRIM
修饰。     
        我遇到了同样的问题。 我的表包含一个称为Definition的NVARCHAR(MAX)字段。数据库中的当前字符串长度为956个字符。 代码调用数据,并返回有效数据。 [东西发生]。生成了update命令,它使用WHERE子句中的Definition字段。零行被更新。 我拦截了该查询,并注意到当“定义”从“位置”中排除时,将执行UPDATE命令。 直接进入数据库,我从表WHERE Id = [无论ID是什么]中运行了一个简单的SELECT定义。返回行。 接下来,我从第一个结果中复制了Definition,并将查询更改为WHERE Definition = \'[...] \',但未返回任何内容。 开始感到困惑,我更改了查询,以便内部选择通过ID获得定义,而外部选择在内部选择的结果上具有IN。返回一行。 这使我认为,当您将文本(ASCII)与NVARCHAR(UNICODE)中的值进行比较时,就会出现“问题”。 我仍在设法得到答案。 *请不要对我在代码或奇怪的WHERE子句中构建查询的事实发表评论。     

要回复问题请先登录注册