J'ai un tableau qui contient des données qui ressemblent à ceci:
id oe
-- ---------------------------------------------------
1 04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
2 64526915083,64526953474
3 04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
4 F4DH8C607AA,F4DHAA
5 F4DH8C607AA,F4DHAA
6 04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
7 64526915083,64526953474
8 F4DH8C607AA,F4DHAA
9 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
10 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
11 04715SNAA90,04715SNAA90ZZ,71501SNAA00,71501SNAA00ZZ
12 64526915083,64526953474
13 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
14 F4DH8C607AA,F4DHAA
15 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
Comment puis-je écrire une requête où je peux passer un tableau de valeurs et retourner des lignes où cette colonne contient l'une des valeurs du tableau?
Cela fonctionne parce que j'obtiens une autre valeur d'une table de recherche et je préfère ne pas le faire de cette façon car il n'y a pas d'index sur la colonne hol
dans la table pubnet
.
[veuillez ne pas suggérer d'en ajouter un car je ne peux pas modifier la base de données]
SELECT * FROM pubnet
where hol in (select hol from id2hol where id in ('F3DH19860AA', 'F4DHAA'))
Ce serait le jeu de résultats:
id oe
-- ---------------------------------------------------
4 F4DH8C607AA,F4DHAA
5 F4DH8C607AA,F4DHAA
8 F4DH8C607AA,F4DHAA
9 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
10 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
13 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
14 F4DH8C607AA,F4DHAA
15 F3DH19860AA,F3DHAA,F4DH19860AA,F4DHAA
Vous devez convertir les valeurs séparées par des virgules en un tableau, puis vous pouvez utiliser l'opérateur de chevauchements &&
select *
from pubnet
where string_to_array(oe, ',') && array['F3DH19860AA', 'F4DHAA']