在sql server参数中使用N前缀

时间:2016-09-26 10:49:02

标签: sql-server

在我的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),但它也不起作用。

还有其他办法吗?

1 个答案:

答案 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