在我的where子句中,如果我写AND acts.displayname = N'Onaylanmış Rapor'
,我会得到我想要的结果。但是为了参数化查询,我发现NVARCHAR(MAX)参数仍然返回没有特殊字符的VARCHAR结果。
我的问题的样本是这样的;
DECLARE @displayname NVARCHAR(MAX)
SET @displayname = 'Onaylanmış Rapor'
select @displayname as param, CONVERT(NVARCHAR(MAX),@displayname) as nvarconvert, CAST(@displayname as NVARCHAR(MAX)) as nvarcharcast
+------------------+------------------+------------------+
| param | nvarconvert | nvarcharcast |
+------------------+------------------+------------------+
| Onaylanmis Rapor | Onaylanmis Rapor | Onaylanmis Rapor |
+------------------+------------------+------------------+
我仍然需要参数为“Onaylanmış Rapor
”。
我尝试将参数值转换为nvarchar(max),但它也不起作用。
还有其他办法吗?
答案 0 :(得分:3)
SET @displayname ='OnaylanmışRapor'通过在撇号中包含一个字符串,它被隐式转换为非unicode。您需要在硬编码字符串中使用unicode标识符。
DECLARE @displayname NVARCHAR(MAX)
SET @displayname = N'Onaylanmış Rapor'
select @displayname as param, CONVERT(NVARCHAR(MAX),@displayname) as nvarconvert, CAST(@displayname as NVARCHAR(MAX)) as nvarcharcast