NCHAR(1600) 的替换在 SQL 服务器上不起作用

Replace of NCHAR(1600) is not working on SQL Server

当我运行下面的代码时,NCHAR(1600)没有被替换

SELECT REPLACE(N'foo' + NCHAR(1600), NCHAR(1600), '**') --> output: fooـ

有谁知道是什么问题吗?

某些字符在某些排序规则中匹配不佳。因此,有些人会在不相同的情况下与其他人进行匹配,而其他人可能最终无法匹配。

REPLACE 使用排序规则,因此似乎无法匹配相同字符。在这种情况下,通常会在 REPLACE 内使用不同的排序规则,如果您需要 return 原始排序规则,请在外部再次使用 COLLATE

SELECT REPLACE(N'foo' + NCHAR(1600) COLLATE Persian_100_BIN, NCHAR(1600), '**') COLLATE Persian_100_CI_AI;

我们也可以使用 REPLICATE,而不是在高层编写排序规则,只需要在 N'foo' 值之后连接 * 对吗?

SELECT CONCAT(N'foo',REPLICATE('*',1600))