webentwicklung-frage-antwort-db.com.de

Kombination von "LIKE" und "IN" für SQL Server

Ist es möglich, LIKE und IN in einer SQL Server-Abfrage zu kombinieren?

Also, dass diese Abfrage

SELECT * FROM table WHERE column LIKE IN ('Text%', 'Link%', 'Hello%', '%World%')

Findet eine dieser möglichen Übereinstimmungen:

Text, Textasd, Text hello, Link2, Linkomg, HelloWorld, ThatWorldBusiness

usw...

215
Florian Peschka

Tatsächlich erstellt die IN-Anweisung eine Reihe von OR-Anweisungen ... also

SELECT * FROM table WHERE column IN (1, 2, 3)

Ist effektiv

SELECT * FROM table WHERE column = 1 OR column = 2 OR column = 3

Und leider ist dies der Weg, den Sie mit Ihren LIKE-Anweisungen einschlagen müssen

SELECT * FROM table
WHERE column LIKE 'Text%' OR column LIKE 'Hello%' OR column LIKE 'That%'
239
Fenton

Ich weiß, das ist alt, aber ich habe eine Art funktionierende Lösung

SELECT Tbla.* FROM Tbla
INNER JOIN Tblb ON
Tblb.col1 Like '%'+Tbla.Col2+'%'

Sie können es mit Ihrer where-Klausel usw. weiter ausbauen. Ich habe dies nur beantwortet, weil ich danach gesucht habe und einen Weg gefunden habe, wie ich das tun kann.

188
lloydz1

Eine andere Möglichkeit wäre, so etwas zu verwenden

SELECT  * 
FROM    table t INNER JOIN
        (
            SELECT  'Text%' Col
            UNION SELECT 'Link%'
            UNION SELECT 'Hello%'
            UNION SELECT '%World%'
        ) List ON t.COLUMN LIKE List.Col
103
Adriaan Stander

Nein, Sie müssen OR verwenden, um Ihre LIKE -Anweisungen zu kombinieren:

SELECT 
   * 
FROM 
   table
WHERE 
   column LIKE 'Text%' OR 
   column LIKE 'Link%' OR 
   column LIKE 'Hello%' OR
   column LIKE '%World%'

Haben Sie sich Volltextsuche angesehen?

9
Mitch Wheat

Sie benötigen mehrere LIKE-Klauseln, die durch OR verbunden sind.

SELECT * FROM table WHERE 
column LIKE 'Text%' OR 
column LIKE 'Link%' OR 
column LIKE 'Hello%' OR 
column LIKE '%World%' OR 
8
Eric J.

Nein, MSSQL lässt solche Abfragen nicht zu. Sie sollten col LIKE '...' OR col LIKE '...' usw. verwenden.

5
Andrew Lygin