2017-09-19 3 views
-3

Ich habe meine Variable deklariert:SQL deklarierte Variable als nvarchar. Verwenden Dezember Variable als 'wie' oder 'enthält' in where-Klausel

declare @search as nvarchar 
set @search = 'road' 

Dann ich dies effektiv haben möchte meine Where-Klausel:

where 

unit.BuildingName like '%@search%' or 
property.Street like '%@search%' or 
unit.Street like '%@search%' 

Offensichtlich nicht zur Arbeit gehen, da dies nicht einmal meine erklärte Variable betrachtet.

Aber können Sie sehen, was ich versuche zu bekommen?

Danke!

+1

Markieren Sie Ihre Frage mit der Datenbank, die Sie verwenden. –

+1

Mögliches Duplikat von [T-SQL und WHERE LIKE% Parameter% -Klausel] (https://stackoverflow.com/questions/14237755/t-sql-and-the-where-like-parameter-clause) –

Antwort

1

Sie sollten die Abfrage wie folgt ändern.

declare @search as nvarchar(500) 
set @search = '%road%' 

where 
unit.BuildingName like @search or 
property.Street like @search or 
unit.Street like @search 
0

@search in Ihrer Abfrage wird wörtlich statt als variabler Wert interpretiert. Sie wollen wahrscheinlich diese:

where 

unit.BuildingName like '%' + @search + '%' or 
property.Street like '%' + @search + '%' or 
unit.Street like '%' + @search + '%' 
0

Wenn ich vermute, dass Sie SQL Server verwenden (auf der Basis der Bezugnahme auf contains), müssen Sie zwei Dinge tun:

declare @search as nvarchar(255) 
set @search = 'road'; 

Notiere die Zugabe von eine Länge.

Dann:

where unit.BuildingName like '%' + @search + '%' or 
     property.Street like '%' + @search + '%' or 
     unit.Street like '%' + @search + '%' 

Wenn dieser Teil der dynamischen SQL ist, sollten Sie @search in als Zeichenfolge werden vorbei, anstatt munging die Query-String.

Sie könnten in der Lage sein, Ihre Logik zu vereinfachen:

where (unit.BuildingName + property.Street + unit.Street) like '%' + @search + '%'