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%)
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%'
Tu ne peux pas. Écrivez-le comme:
column1 LIKE 'a%' OR column1 LIKE 'b%' OR column1 LIKE 'c%'
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;
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 ...