是什么导致两个看起来相同的SQL字符串之间的差异?
我有一个连接问题,是由连接键中的特殊字符引起的。键是nvarchar字符串。两个字符串看起来完全相同。 (1)是什么导致两个看起来相同的SQL字符串之间的差异?,sql,sql-server,string,join,special-characters,Sql,Sql Server,String,Join,Special Characters,我有一个连接问题,是由连接键中的特殊字符引起的。键是nvarchar字符串。两个字符串看起来完全相同。 (1) Łódzkie (2) Łódzkie 第一个是“正常”。如果我双击它,整个单词将被选中。如果我双击第二个单词,只会选择其中的一半(Ł或ódzkie),这取决于单击的是哪一半 我尝试将列类型从nvarchar更改为varchar。 我认为问题是由第一个字母引起的。我尝试了两种情况下的第一个字母的ascii作为selectASCII('321'),在这两种情况下我都得到了结果163 到目
Łódzkie
(2) Łódzkie
第一个是“正常”。如果我双击它,整个单词将被选中。如果我双击第二个单词,只会选择其中的一半(Ł
或ódzkie
),这取决于单击的是哪一半
我尝试将列类型从nvarchar更改为varchar。
我认为问题是由第一个字母引起的。我尝试了两种情况下的第一个字母的ascii作为selectASCII('321')
,在这两种情况下我都得到了结果163
到目前为止运气不好 听起来字符串中可能包含(隐藏)系统字符。您可以编写简单的t-sql函数,使用类似于
unicode
的函数将字符串转换为unicode代码数组。因此,您将看到差异。尝试将列强制转换为varbinary并检查代码点:选择CAST(Col1作为varbinary(100)),CAST(Col2作为varbinary(100))
。另外,请确保在分析中使用N
作为Unicode文本的前缀:selectASCII(N'Ł')
@AllanS.Hansen是的,它解决了问题。罪犯不是藏在第一个字母里,而是藏在第二个看不见的字母里。它是看不见的。CHAR(129)
——它看起来有点像没有空间的杜鹃蛋。我用unicode(substring(word,2,1))找到了它。非常感谢大家。