Fre*_*red 1 t-sql sql-server sql-server-2017 sql-server-collation
当我运行以下代码时,NCHAR(1600)
不会被替换
SELECT REPLACE(N'foo' + NCHAR(1600), NCHAR(1600), '**') --> output: foo\xd9\x80\n
Run Code Online (Sandbox Code Playgroud)\n\nPersian_100_CI_AI
Persian_100_CI_AI
太Microsoft SQL Server 2017 (RTM-CU3-GDR) (KB4052987) - 14.0.3015.40 (X64)
有谁知道是什么问题?
\n某些字符在某些排序规则中匹配得不好。因此,有些人在不相同时会与其他人进行匹配,而另一些人即使相同也可能最终无法匹配。
REPLACE
使用排序规则,因此看起来相同字符的匹配不起作用。在这种情况下,通常会在 内部使用不同的排序规则REPLACE
,如果需要返回原始排序规则,请COLLATE
在外部再次使用:
SELECT REPLACE(N'foo' + NCHAR(1600) COLLATE Persian_100_BIN, NCHAR(1600), '**') COLLATE Persian_100_CI_AI;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
366 次 |
最近记录: |