Łączenie "LIKE" I " IN " dla SQL Server [duplikat]

To pytanie ma już odpowiedź tutaj:

Czy możliwe jest połączenie LIKE i IN w zapytaniu SQL Server?

Tak, że to zapytanie

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

Znajduje dowolne z tych możliwych dopasowań:

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

Itd...

 165
Author: MPelletier, 2009-12-08

6 answers

Efektywnie, Instrukcja IN tworzy serię instrukcji OR... so

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

Jest skutecznie

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

I niestety, to jest droga, którą będziesz musiał obrać ze swoimi podobnymi wypowiedziami

SELECT * FROM table
WHERE column LIKE 'Text%' OR column LIKE 'Hello%' OR column LIKE 'That%'
 188
Author: user75525,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-08 07:55:27

Wiem, że to stare, ale mam coś w rodzaju rozwiązania roboczego

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

Możesz rozszerzyć go dalej za pomocą klauzuli where itp. Odpowiedziałam na to tylko dlatego, że tego właśnie szukałem i musiałem wymyślić, jak to zrobić.

 144
Author: lloydz1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-04 16:41:43

Inną opcją byłoby użycie czegoś takiego

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
 93
Author: Adriaan Stander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-08 08:07:04

Nie, musisz użyć OR, aby połączyć swojeLIKE wypowiedzi:

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

Czy oglądałeś Wyszukiwanie pełnotekstowe ?

 7
Author: Mitch Wheat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-24 05:48:30

Potrzebujesz wielu podobnych klauzul połączonych przez OR.

SELECT * FROM table WHERE 
column LIKE 'Text%' OR 
column LIKE 'Link%' OR 
column LIKE 'Hello%' OR 
column LIKE '%World%' OR 
 4
Author: Eric J.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-08 07:53:32

Nie, MSSQL nie zezwala na takie zapytania. Powinieneś użyć col LIKE '...' OR col LIKE '...' itp.

 1
Author: Andrew Lygin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-08 07:54:35