2017-05-16 2 views

Antwort

2

Sie müssen ein beliebiges Nvarchar-String-Literal mit einem N voranstellen. Wenn Sie das nicht tun, nimmt SQL Server an, dass es kein Nvarchar ist.

Zum Beispiel:

declare @Name1 nvarchar(50), @Name2 nvarchar(50) 

set @Name1 = N'علی'; 
set @Name2 = 'علی'; 

select @Name1 "Name1", @Name2 "Name2" 

Wird dies zurück:

Name1  Name2  
-------- -------- 
علی  ???  

Try this:

declare @Name nvarchar(50) 
set @Name = N'علی'; 
select * from PersonsInfoTbl where Name LIKE @Name + N'%'; 
0

das Problem, das Sie die Variable @Name ohne die N '' gesetzt, dann ist dies nessecary für SQL Sie es als nvarchar auf weiß

declare @Name nvarchar(50) 
set @Name = N'علی'; 
select * from @t where Name LIKE N''[email protected]+'%'; 

dies die Zeilen

0

hinzufügen zurückzukehren und eine andere Variable Speichern Sie den SQL-Befehl als Zeichenfolge. Außerdem müssen Sie den Unicode N für Ihre Variablen und Befehle verwenden, damit der Text auch als Unicode gespeichert wird.

declare @Name nvarchar(50) 
declare @sqlcmd nvarchar(max) 
set @Name = N'علی'; 
set @sqlcmd = N'select * from PersonsInfoTbl where Name LIKE '''[email protected]+'%''' 
EXECUTE(@sqlcmd) 

Edit: Ich nehme an, das dynamische Teil in diesem speziellen Fall nicht notwendig ist, aber Sie werden dies in Zukunft schriftlich Abfragen nützlich finden.

Verwandte Themen