Heim >Datenbank >MySQL-Tutorial >Wie teilt man eine durch Trennzeichen getrennte VARCHAR-Spalte für effiziente SQL-Abfragen auf?

Wie teilt man eine durch Trennzeichen getrennte VARCHAR-Spalte für effiziente SQL-Abfragen auf?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-17 17:55:09739Durchsuche

How to Split a Delimited VARCHAR Column for Efficient SQL Queries?

Aufteilen einer VARCHAR-Spalte in mehrere Werte in SQL

Problem:

Beim Abrufen von Werten Aus einer VARCHAR-Spalte mithilfe einer IN-Klausel wandelt Oracle die durch Trennzeichen getrennte Liste in eine Zeichenfolge in einfache Anführungszeichen um und verhindert so das Unterabfrage aus übereinstimmenden Einzelwerten.

Lösung 1:

Umschließen Sie die durch Trennzeichen getrennten Listenwerte in der IN-Klausel mit demselben Trennzeichen, das in der VARCHAR-Spalte verwendet wird. Anstatt beispielsweise AD_Ref_List.Value IN ('CO','VO') zu verwenden, verwenden Sie AD_Ref_List.Value IN (',' || 'CO' || ',' || 'VO' || ',') .

Lösung 2 (Alternative Where-Klausel):

Verwenden Sie einen auf regulären Ausdrücken basierenden Technik mit der Funktion REGEXP_SUBSTR, um einzelne Werte aus der begrenzten Liste auf bestimmten Ebenen zu extrahieren. Die folgende Abfrage verwendet beispielsweise Rekursion, um die durch Trennzeichen getrennte Liste aufzuteilen:

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, '[^,]+')
);

Das obige ist der detaillierte Inhalt vonWie teilt man eine durch Trennzeichen getrennte VARCHAR-Spalte für effiziente SQL-Abfragen 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