为什么这个查询给了我????????作为输出。
Declare @Search NVARCHAR(MAX) = 'اختبار كتاب اللغة العربية'
SET @Search = N''+ @Search
select @Search
这个工作正常的地方: -
Declare @Search NVARCHAR(MAX) = N'اختبار كتاب اللغة العربية'
select @Search
我想让我的查询动态化。还有其他方法吗?
动态,我可以传递@Search参数中的任何内容。我有一个.NET应用程序,我将在@Search参数中传递要搜索的字符串,该参数可以是英语或阿拉伯语。
答案 0 :(得分:1)
因为您需要在字符串文字前加上N来将其标识为Unicode字符串,否则会将其视为仅包含单字节字符。
你能详细说明"我想让我的查询动态"?
Declare @Search NVARCHAR(MAX) = 'اختبار كتاب اللغة العربية'
执行此行时,它将字符串文字视为单字节文字,并将其分配给变量@Search。该变量能够存储unicode字符串(但您没有为其分配一个)。当您稍后引用它时,文本已经被修改,您已经丢失了一些编码,它无法恢复。您必须在将文本分配给变量的位置为文字加前缀。
您是否有理由不在脚本中添加该前缀?