首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >T-SQL替换"cyrillic symbols“返回‘?’

T-SQL替换"cyrillic symbols“返回‘?’
EN

Stack Overflow用户
提问于 2012-09-17 16:20:37
回答 2查看 2.1K关注 0票数 0

我有一个函数可以将CSV列表转换为表中的nvarchar(max)记录。我注意到它不能与西里尔文一起工作,问题是这里的替换:

代码语言:javascript
复制
DECLARE @XML xml = N'<r><![CDATA[' + REPLACE(@List, ',', ']]></r><r><![CDATA[') + ']]></r>'

如何使替换与西里尔符号一起工作?例如'тест‘。

@List是NVARCHAR(MAX),而我使用的是SQL Server 2012。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-17 17:01:02

N''表示法用于声明Unicode字符串文字。如果您定义了一个变量NVARCHAR,它将自动启用Unicode(因此没有必要(或者更确切地说:没有办法)另外声明@variables的N -它是字符串文字的一部分)。

因为您在SELECT N'тест'中获得了西里尔字符,所以应该检查变量@List被赋值的位置,以及它的值是什么。

不确定您的CSV解析器如何处理Unicode字符,但问题的根源可能是

在赋值给@ encodings

  • assigning

之前,

  • 不处理对VARCHAR列或变量的文件列表
票数 1
EN

Stack Overflow用户

发布于 2012-09-17 16:42:45

您是否将@List变量定义为nvarchar?用nvarchars替换可以很好地工作

代码语言:javascript
复制
declare @list nvarchar(50) = N'те,ст'
select @list
DECLARE @XML xml = N'<r><![CDATA[' + REPLACE(@List, ',', ']]></r><r><![CDATA[') + ']]></r>'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12455473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档