我有一个函数可以将CSV列表转换为表中的nvarchar(max)记录。我注意到它不能与西里尔文一起工作,问题是这里的替换:
DECLARE @XML xml = N'<r><![CDATA[' + REPLACE(@List, ',', ']]></r><r><![CDATA[') + ']]></r>'如何使替换与西里尔符号一起工作?例如'тест‘。
@List是NVARCHAR(MAX),而我使用的是SQL Server 2012。
发布于 2012-09-17 17:01:02
N''表示法用于声明Unicode字符串文字。如果您定义了一个变量NVARCHAR,它将自动启用Unicode(因此没有必要(或者更确切地说:没有办法)另外声明@variables的N -它是字符串文字的一部分)。
因为您在SELECT N'тест'中获得了西里尔字符,所以应该检查变量@List被赋值的位置,以及它的值是什么。
不确定您的CSV解析器如何处理Unicode字符,但问题的根源可能是
在赋值给@ encodings
之前,
发布于 2012-09-17 16:42:45
您是否将@List变量定义为nvarchar?用nvarchars替换可以很好地工作
declare @list nvarchar(50) = N'те,ст'
select @list
DECLARE @XML xml = N'<r><![CDATA[' + REPLACE(@List, ',', ']]></r><r><![CDATA[') + ']]></r>'https://stackoverflow.com/questions/12455473
复制相似问题