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
Freigeben: 2024-12-17 17:55:09
Original
767 Leute haben es durchsucht

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

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage