2016-10-11 3 views
0

Meine gespeicherte Prozedur Parameter hat @Name nvarchar(250)SQL Server-Funktion Rückkehr Fragezeichen für nicht Englisch Zeichen ersetzen

es einige Einsatzverfahren nach tun, wählen Sie einige nvarchar(250) Text aus einer anderen Tabelle in variable @msg nvarchar(300).

Dann ersetze ich Teil dieses Textes in @msg mit der @Name Variable:

set @msg = REPLACE(@msg, '[contentname]', @Name) 

Das Ergebnis wird @Name als Fragezeichen ersetzt werden, wenn eine andere Sprache als Englisch mit

ich versucht habe

REPLACE(@msg, '[contentname]', @Name COLLATE SQL_Latin1_General_CP1_CI_AS) 

Wenn ich Benutzer @Name drucken zeigt es den nicht-Englisch/arabischen Text korrekt

Kann jemand mir Ideen geben, wie man es repariert?

Dank

+1

Wie legen Sie den Wert von @Name fest? z.B. Führen Sie die gespeicherte Prozedur wie 'exec myProc @Name = N'XXXXXXX 'aus;'? Meine erste Vermutung wäre nur, dass Sie den Wert von @Name ohne das N-Präfix festlegen. – ZLK

+0

Ich führe das Verfahren mit @ Name = N'XXXXXX 'mit N-Präfix, aber es hilft nicht, danke – Mosta

Antwort

0

Wenn Sie eine NVARCHAR Zeichenfolge wörtliche angeben möchten, dann müssen Sie es mit einem N Charakter Präfix:

set @msg = REPLACE(@msg, N'[contentname]', @Name) 

Andernfalls, wenn Sie dies nicht tun, SQL Der Server wird wahrscheinlich alles in VARCHAR konvertieren (da Sie das Präfix N weggelassen haben).

+0

Ich habe das auch versucht, es hat nicht geholfen, danke – Mosta

Verwandte Themen