1
私のwhere節で、AND acts.displayname = N'Onaylanmış Rapor'
と書くと、私は必要な結果を得ます。しかし、クエリをパラメータ化するために、NVARCHAR(MAX)パラメータがVARCHARの結果を返していることがわかりました。SQLサーバパラメータにN接頭辞を使用する
私の問題のサンプルは、このようなものです。
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)に変換しようとしましたが、どちらも機能しません。
他の方法はありますか?
あなたは好きなだけキャストして変換できますが、*入力リテラル*はその文字を含むことができる必要があります。 'N'OnaylanmışRapor''はUnicodeのリテラルで、' 'OnaylanmışRapor''は動作しません。変数が既に割り当てられた後、変換は何もしません。パラメータが 'N(VAR)CHAR'であっても機能しない場合は、クエリを発行するクライアントコードを調べる必要があります。 –
SET @displayname =N'OnaylanmışRapor ' – GuidoG