SQL Server, waarbij LIKE en IN worden gecombineerd?

Is er een eenvoudige manier om LIKE en IN te combineren in één instructie in SQL Server, zonder veel AND en OF ?

bijv. Ik weet in MySQL dat je het op deze manier kunt doen:

SELECT * FROM table1 WHERE column1 REGEXP 'value1|value2|value3'
4
toegevoegd de auteur onedaywhen, de bron

2 antwoord

Niet echt.

Er is geen alternator in de syntaxis van het LIKE patroon. Als je in 2008 kunt gebruiken

SELECT *
FROM   table1
WHERE  EXISTS(SELECT *
              FROM   (VALUES ('value1'),
                             ('value2'),
                             ('value3')) Vals(val)
              WHERE  column1 LIKE '%' + val + '%')  

U kunt ook reguliere expressies in SQL Server gebruiken, maar niet in eigen land. U moet CLR inschakelen en hiervoor een assembly installeren.

6
toegevoegd
@ 200 - Ik denk dat je dan niet in 2008 bent. In eerdere versies is iets vergelijkbaars mogelijk met het gebruik van SELECT 'value1' UNION ALL SELECT 'value2' UNION ALL SELECT 'value3' in de afgeleide tabeldefinitie die een beetje saaier is.
toegevoegd de auteur Martin Smith, de bron
Hallo Martin. Bedankt voor de suggestie. Ik heb het geprobeerd maar kreeg het volgende foutbericht 'Onjuiste syntaxis in de buurt van het zoekwoord' VALUES '. Ernst 15 '
toegevoegd de auteur S200, de bron
Bedankt Martin. Dit zal voor nu doen :). Vraag je af waarom Microsoft dit probleem niet op een eenvoudigere manier implementeert ...
toegevoegd de auteur S200, de bron

Een andere optie is om de zoekwaarden in een tabel te plaatsen en een dynamische SQL te maken om het werk te doen. Het wordt niet aanbevolen maar helpt soms ...

0
toegevoegd