Combinando “como” e “IN” para SQL Server [duplicado]
Pergunta
Esta questão já tem uma resposta aqui:
- Existe uma combinação de “Like” e “IN” em SQL ? 23 respostas
É possível combinar LIKE
e IN
em um SQL Server-consulta?
Assim, que esta consulta ??p>
SELECT * FROM table WHERE column LIKE IN ('Text%', 'Link%', 'Hello%', '%World%')
encontra qualquer uma destas partidas possíveis:
Text, Textasd, Text hello, Link2, Linkomg, HelloWorld, ThatWorldBusiness
etc ...
Solução
Com efeito, a declaração IN cria uma série de declarações OU ... então
SELECT * FROM table WHERE column IN (1, 2, 3)
É efetivamente
SELECT * FROM table WHERE column = 1 OR column = 2 OR column = 3
E, infelizmente, esse é o caminho que você vai ter que levar com as suas declarações como
SELECT * FROM table
WHERE column LIKE 'Text%' OR column LIKE 'Hello%' OR column LIKE 'That%'
Outras dicas
Eu sei que este é antiga, mas eu tenho uma espécie de solução de trabalho
SELECT Tbla.* FROM Tbla
INNER JOIN Tblb ON
Tblb.col1 Like '%'+Tbla.Col2+'%'
Você pode expandi-lo ainda mais com a sua cláusula where etc. Eu só respondeu isto porque isto é o que eu estava procurando e eu tive que descobrir uma maneira de fazê-lo.
Uma outra opção seria usar algo como isto
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
Não, você terá que usar OR
para combinar suas declarações LIKE
:
SELECT
*
FROM
table
WHERE
column LIKE 'Text%' OR
column LIKE 'Link%' OR
column LIKE 'Hello%' OR
column LIKE '%World%'
Você já olhou para Full-Text Search ?
Você precisa de várias cláusulas COMO conectadas por OR.
SELECT * FROM table WHERE
column LIKE 'Text%' OR
column LIKE 'Link%' OR
column LIKE 'Hello%' OR
column LIKE '%World%' OR
Não, MSSQL não permite tais consultas. Você deve usar col LIKE '...' OR col LIKE '...'
etc.