SQL-Server中奇怪的字符串行为

时间:2015-06-29 13:47:22

标签: sql-server unicode unicode-string

我很好奇它背后的原因是什么。我有一个像'a⁢a'这样的字符串。我通常会认为字符串长度应该是2左右。而是运行SELECT LEN('a⁢a'),它返回3而不是2。

背后的原因是什么?

1 个答案:

答案 0 :(得分:1)

我需要几分钟才能弄明白。

假设其中有某种隐藏的字符,我怀疑有回车或换行的东西在那里。我已经尝试过不同的东西,如打印和子串。

事实上,我提出了这个想法,即第一个和第二个a之间的标志。这可以通过以下代码证明。

SELECT LEN('a⁢a'), SUBSTRING('a⁢a',2,1)

结果:

----------- ----
3           ?

事实上,标志无法显示(?)指向unicode。使用unicode字符串后,结果会发生变化。

SELECT LEN(N'a⁢a'), SUBSTRING(N'a⁢a',2,1) 

结果:

----------- ----
3           ⁢

符号仍然不可见。我尝试使用此命令检索正确的unicode符号:

SELECT LEN(N'a⁢a'), UNICODE(SUBSTRING(N'a⁢a',2,1))

结果如下:

----------- -----------
3           8290

事实证明,它是unicode中的invisible times字符。只是想让你知道这件事,以防其他人带来这样的事情。