[英]T-SQL Replace “cyrillic symbols” returns '????'
我有一个函数将CSV列表转换为表中的nvarchar(max)记录。 我注意到它不适用于西里尔语,问题是这里取代:
DECLARE @XML xml = N'<r><![CDATA[' + REPLACE(@List, ',', ']]></r><r><![CDATA[') + ']]></r>'
如何使替换与西里尔符号一起使用? 例如'тест'。
@List是NVARCHAR(MAX),我正在使用SQL Server 2012。
您是否将@List
变量定义为nvarchar? 替换将与nvarchars一起正常工作
declare @list nvarchar(50) = N'те,ст'
select @list
DECLARE @XML xml = N'<r><![CDATA[' + REPLACE(@List, ',', ']]></r><r><![CDATA[') + ']]></r>'
N''
表示法用于声明Unicode字符串文字。 如果您定义了一个变量NVARCHAR,它将自动启用Unicode(因此不需要(或者更确切地说:无法)为@variables另外声明N
- 它是字符串文字的一部分)。
由于您在SELECT N'тест'
获得了西里尔字符,因此您应该检查变量@List的分配位置以及它的值。
不确定CSV解析器如何处理Unicode字符,但问题的根源可能是
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.