web-dev-qa-db-fra.com

Comment utiliser LIKE avec IN dans DB2?

SELECT * FROM abc WHERE column1 IN (a1,b1,c1)

Je veux utiliser LIKE avec cette requête de sélection; comment puis-je écrire une instruction LIKE avec IN, similaire à la requête ci-dessous:

SELECT * FROM abc WHERE column1 LIKE IN (a%,b%,c%)
11
user1580770

Vous ne pouvez pas combiner like avec in. Écrivez-le sous forme de comparaisons distinctes:

select column1
from abc
where column1 like 'a%' or column1 like 'b%' or column1 like 'c%'
11
Guffa

Tu ne peux pas. Écrivez-le comme:

column1 LIKE 'a%' OR column1 LIKE 'b%' OR column1 LIKE 'c%'
6
Ariel

Comme le disent les autres, vous pouvez utiliser une liste de conditions OR pour spécifier les conditions.

Vous pouvez également utiliser une table ou une sous-requête temporaire dans la clause from. Voici un exemple de la sous-requête dans la clause from:

select column1
   from abc
   , table(
       (select 'a%' as term from SYSIBM.SYSDUMMY1)
       union all
       (select 'b%' from SYSIBM.SYSDUMMY1)
       union all
       (select 'c%' from SYSIBM.SYSDUMMY1)
   ) search_list
   where abc.column1  like search_list.term;
2
Justin Swanhart

Si vous voulez vraiment rechercher des chaînes commençant par a, b ou c, vous pouvez opter pour:

SELECT * 
FROM abc
WHERE LEFT(column1, 1) IN ('a', 'b', 'c')

Je suppose que votre cas est en fait plus complexe, mais vous pouvez peut-être adapter cet extrait de code à vos besoins ...

0
Cédric Bourgeois