String naar kolommen.

Ik krijg regelmatig een hoeveelheid klantnummers binnen waarvan gevraagd wordt om daar wat gegevens bij te zoeken. Dat is geen enkel probleem, met een select * from klant where id in (1,2,3,4,5,6) heb je ze te pakken. Lastiger wordt het als je wil weten of alle waarden wel bestaande id’s zijn. Daarom stop ik de string dan ‘even’ in de volgende query, welke ik dan als inline view defineer om mee te outer joinen met de klanten tabel.  Alle id’s waar geen klant gegevens bij worden gevonden zijn dan ongeldige waardes.

SELECT REGEXP_SUBSTR(str, '[^,]+', 1, LEVEL) AS ID
FROM  (SELECT '123,234,345,456,567,678,789,890' str
       FROM dual)
CONNECT BY INSTR(str,',', 1, LEVEL-1) > 0