2017-09-19 5 views
-3

j'ai déclaré ma variable:SQL a déclaré la variable comme nvarchar. Utilisez la variable Diminuer 'comme' ou 'Contient' dans la clause where

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

Alors je veux effectivement avoir dans ma clause Where:

where 

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

De toute évidence pas aller travailler car cela ne regarde même pas ma variable déclarée.

Mais pouvez-vous voir ce que je veux savoir?

Merci!

+1

Marquez votre question avec la base de données que vous utilisez. –

+1

Copie possible de [T-SQL et de WHERE LIKE% Parameter% clause] (https://stackoverflow.com/questions/14237755/t-sql-and-the-where-like-parameter-clause) –

Répondre

1

Vous devez modifier la requête comme celui-ci.

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 dans votre requête est interprétée littéralement, plutôt que comme une valeur de variable. Vous voulez sans doute ceci:

where 

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

Si je devine que vous utilisez SQL Server (basé sur la référence à contains), vous devez faire deux choses:

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

Notez l'ajout de une longueur.

Puis:

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

Si cela fait partie de SQL dynamique, vous devriez être en @search passait comme une chaîne, plutôt que munging la chaîne de requête.

Vous pourriez être en mesure de simplifier votre logique:

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