So teilen Sie eine durch Trennzeichen getrennte VARCHAR-Spalte in mehrere Werte in SQL auf und führen Teilzeichenfolgen-Übereinstimmungen durch
Ihre ursprüngliche Abfrage versucht, die „AD_Ref_List“ zu filtern. Tabelle basierend auf einer durch Trennzeichen getrennten Liste von Werten, die in der Tabelle „xx_insert“ gespeichert sind. Allerdings behandelt Oracle die durch Kommas getrennten Werte als eine Zeichenfolge, was zu keinen übereinstimmenden Zeilen führt.
Um dieses Problem zu beheben, ziehen Sie die folgenden Ansätze in Betracht:
Verwenden eines String-Teilstring-Matches mit Trennzeichen:
Umschließen Sie sowohl den Spaltenwert als auch die durch Trennzeichen getrennte Liste in Trennzeichen und führen Sie einen Teilzeichenfolgenabgleich durch. Dadurch wird sichergestellt, dass exakte Übereinstimmungen innerhalb der durch Trennzeichen getrennten Liste gefunden werden.
SELECT r.Value FROM AD_Ref_List r INNER JOIN xx_insert x ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' ) WHERE r.AD_Reference_ID = 1000448 AND x.xx_insert_id = 1000283;
Verwenden eines regulären Ausdrucks zum Teilen der durch Trennzeichen getrennten Liste:
Extrahieren Sie einzelne Werte aus der durch Trennzeichen getrennten Liste Verwendung eines regulären Ausdrucks und einer Unterabfrage. Führen Sie dann einen wertbasierten Abgleich in der Hauptabfrage durch.
SELECT Value FROM AD_Ref_List WHERE AD_Reference_ID = 1000448 AND value IN ( SELECT REGEXP_SUBSTR( XX_DocAction_Next, '[^,]+', 1, LEVEL ) FROM xx_insert WHERE xx_insert_id = 1000283 CONNECT BY LEVEL <= REGEXP_COUNT( XX_DocAction_Next, '[^,]+' ) );
Überlegungen:
Das obige ist der detaillierte Inhalt vonWie teile ich eine durch Trennzeichen getrennte VARCHAR-Spalte in SQL für den Teilstring-Abgleich auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!