选择查询输出为???????????用不同的语言文字

时间:2015-05-07 09:37:21

标签: sql-server-2008-r2

为什么这个查询给了我????????作为输出。

 Declare     @Search    NVARCHAR(MAX) = 'اختبار كتاب اللغة العربية'
 SET @Search = N''+ @Search
 select   @Search

这个工作正常的地方: -

 Declare     @Search    NVARCHAR(MAX) = N'اختبار كتاب اللغة العربية'
 select   @Search 

我想让我的查询动态化。还有其他方法吗?

动态,我可以传递@Search参数中的任何内容。我有一个.NET应用程序,我将在@Search参数中传递要搜索的字符串,该参数可以是英语或阿拉伯语。

1 个答案:

答案 0 :(得分:1)

因为您需要在字符串文字前加上N来将其标识为Unicode字符串,否则会将其视为仅包含单字节字符。

你能详细说明"我想让我的查询动态"?

Declare     @Search    NVARCHAR(MAX) = 'اختبار كتاب اللغة العربية'

执行此行时,它将字符串文字视为单字节文字,并将其分配给变量@Search。该变量能够存储unicode字符串(但您没有为其分配一个)。当您稍后引用它时,文本已经被修改,您已经丢失了一些编码,它无法恢复。您必须在将文本分配给变量的位置为文字加前缀。

您是否有理由不在脚本中添加该前缀?