Select 查询输出为 ????????????用不同的语言文本

Select Query giving output as ??????????? with different language text

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

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

这个工作正常的地方:-

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

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

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

因为你需要在字符串字面量前加上 N 来标识它是 Unicode 字符串,否则它会被视为只包含单字节字符。

你能详细说明一下吗"I want to make my query dynamic"?

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

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

为什么不能在脚本中添加该前缀?