Die folgende SQL repliziert das Problem, das ich versuche zu lösen. Trotz der Übergabe einer NOT IN-Klausel werden alle drei Datensätze zurückgegeben.Übergeben einer begrenzten Zeichenfolge in der NOT IN-Klausel
Ich habe eine Tabelle, die eine Zeichenfolge mit Trennzeichen enthält, die ich als Kriterien zum Ausschließen von Datensätzen aus dem Dataset verwenden möchte. Das Problem, das ich habe, ist jedoch, dass die zurückgegebene Zeichenfolge nicht in ihre begrenzten Elemente aufgeteilt wird. Ich möchte, dass die oben übersetzen:
SELECT * FROM (
SELECT 'JACK' AS VALUE FROM DUAL
UNION
SELECT 'JOHN' AS VALUE FROM DUAL
UNION
SELECT 'BOB' AS VALUE FROM DUAL
) WHERE VALUE NOT IN ('BOB','JOHN');
https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:210612357425 – OldProgrammer
Sie haben eine Tabelle, die eine Zeichenfolge mit Trennzeichen enthält? Warum? Wenn Sie Ihre Datenbank ordnungsgemäß verwendet und die Zeichenfolgen getrennt gespeichert haben, ist das Schreiben einer Abfrage kein Problem. –
Alle drei Datensätze werden zurückgegeben, weil "BOB, JOHN" ein ** einzelner Zeichenfolgenwert ** ist. Offensichtlich "BOB, JOHN!" = "BOB" und "BOB, JOHN!" = "JACK" und "BOB, JOHN!" = "JOHN". Das Ergebnis ist also korrekt. Das Problem besteht darin, dass Sie eine Sammlung als Zeichenfolge und nicht als etwas Passendes speichern, z. B. ein Array oder eine Tabelle. – APC