Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment rechercher plusieurs chaînes ou caractères dans un champ en sql

Si vous avez multiple patterns pour rechercher, il vaut mieux créer une derived table ou temporary table pour stocker les patterns

DECLARE @patterns TABLE  (
pattern VARCHAR(20)
);

INSERT INTO @patterns VALUES ('%$%'), ('%[%]%'), ('%ac cd%');

SELECT a.* FROM table_name a JOIN @patterns p ON (a.Description LIKE p.pattern);

Si vous avez plusieurs colonnes à comparer, ajoutez simplement une expression dans le ON clause

SELECT a.* FROM table_name a JOIN @patterns p ON (a.Description LIKE p.pattern)
OR (a.Column2 like p.pattern);

Mise à jour :Utilisation de la vue

CREATE VIEW PatternSearch
AS
 WITH Patterns (Patterns)
  AS
  (
     Select  '%Tool%'
     union all
     Select '%Sale%'
     union all
     Select  '%ac cd%'
  )
   SELECT a.* FROM table_name a JOIN Patterns p ON (a.Description LIKE p.pattern)

GO

Pas testé mais vous pouvez faire comme ça

Source