Für eine select-Anweisung wählen eingestellt I des in dem Zustand von außen in einer Konfigurationsdatei als Parameter einen Teil, wie folgt aus (COL2
mit String-Werten gefüllt ist):Wählen Sie in der Liste, wo sonst all die meisten elegant
SELECT COL1
,COL2
FROM TABLE1
WHERE COL2 = $external_parameter
Jetzt habe ich einen komplexeren Fall, wo ich den externen Parameter eine Liste sein muss. Immer wenn ein Wert von COL2
in der Liste ist, sollte er auswählen, wenn jedoch keine Liste oder irgendeine Art von "leerem" Tag angegeben wird, sollte jeder Wert erneut ausgewählt werden. Ich kam mit einer Idee, aber es funktioniert nicht auf diese Weise:
SELECT COL1
,COL2
FROM TABLE1
WHERE $external_list = ('') or COL2 IN $external_list
Wie dies würde die Aussage für alle Elemente COL2
wahr sein, wenn eine leere Liste vorgesehen ist, und gilt für jedes Element in der Liste das stimmt mit der Liste überein, wenn eine gefüllte Liste zur Verfügung gestellt wird.
Wenn ich jedoch eine gefüllte Liste zur Verfügung stellen wird es nicht in der ersten Hälfte des in dem Statements auf dem Vergleich zu arbeiten:
('entry_a', 'entry_b') = ('')
Gibt es eine Abfrage, die es funktionieren würde - am besten in einer einer Zeile Wo Aussage?
Alle Antworten zur Verfügung gestellt haben für meine nicht arbeiten, wie ich eine Liste als externe Parameter liefern , so kommt es immer zu '('entry_a', 'entry_b') = ''', was bei mir nicht zu funktionieren scheint. Muss ich die Liste im externen Parameter in einem anderen Format bereitstellen? – aldorado
'WO '' IN $ external_list ODER COL2 IN $ external_list' – adrianm
Dies ist die eleganteste Sache, die auf meinem Fall funktioniert, ich denke, ich werde es verwenden. Aber es deckt nicht den Fall ab, dass jemand versehentlich die Liste auf '('entry_a', 'entry_b', '')' setzt. Ich muss einen Check dafür finden. Aber es wird für mich funktionieren. – aldorado