Heim >Datenbank >MySQL-Tutorial >Wie teile ich eine durch Trennzeichen getrennte VARCHAR-Spalte in SQL für den Teilstring-Abgleich auf?

Wie teile ich eine durch Trennzeichen getrennte VARCHAR-Spalte in SQL für den Teilstring-Abgleich auf?

DDD
DDDOriginal
2024-12-26 08:03:11706Durchsuche

How to Split a Delimited VARCHAR Column in SQL for Substring Matching?

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:

  1. Wählen Sie den Ansatz, der Ihren Leistungs- und Datenanforderungen am besten entspricht .
  2. Stellen Sie sicher, dass sowohl der Spaltenwert als auch die durch Trennzeichen getrennte Liste konsistent mit demselben Format formatiert sind Trennzeichen.
  3. Erwägen Sie die Verwendung einer gespeicherten Prozedur oder Funktion, um die Aufteilungslogik für Wiederverwendbarkeit und einfachere Wartung zu kapseln.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn