Heim >Datenbank >MySQL-Tutorial >Wie teilt man eine durch Trennzeichen getrennte VARCHAR-Spalte für effiziente SQL-Abfragen auf?
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!