it-swarm.com.de

Postgres-Abfragespalte mit durch Kommas getrennten Zeichenfolgen für ein Array von Zeichenfolgen

Ich habe eine Tabelle mit Daten, die so aussehen:

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

Wie kann ich eine Abfrage schreiben, in der ich ein Array von Werten übergeben und Zeilen zurückgeben kann, in denen diese Spalte einen der Werte im Array enthält?

Dies funktioniert, weil ich einen anderen Wert aus einer Nachschlagetabelle erhalte und dies lieber nicht so mache, da die Spalte hol in der Tabelle pubnet keinen Index enthält.
[Bitte schlagen Sie nicht vor, eine hinzuzufügen, da ich die Datenbank nicht ändern kann]

SELECT * FROM pubnet 
where hol in (select hol from id2hol where id in ('F3DH19860AA', 'F4DHAA'))

Dies wäre die Ergebnismenge:

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
2
MB34

Sie müssen die durch Kommas getrennten Werte in ein Array konvertieren, dann können Sie den Überlappungsoperator && Verwenden.

select *
from pubnet
where string_to_array(oe, ',') && array['F3DH19860AA', 'F4DHAA']