Aufteilen von VARCHAR-Spalten in mehrere Werte in SQL
Ihr Ziel ist es, eine VARCHAR-Spalte, AD_Ref_List.Value, basierend auf in mehrere Werte aufzuteilen die in einer anderen Tabelle gespeicherten Werte, insbesondere xx_insert.XX_DocAction_Next. Sie sind jedoch auf ein Problem gestoßen, bei dem Oracle die Werte in der durch Trennzeichen getrennten Liste als einzelne Zeichenfolge interpretierte, was dazu führte, dass Ihre Abfrage keine Zeilen zurückgab.
Um dieses Problem zu beheben, können Sie Ihre Abfrage so ändern, dass sie Trennzeichen um die Werte einschließt in der IN-Klausel, um sicherzustellen, dass Oracle sie zum Vergleich als einzelne Werte erkennt. Darüber hinaus können Sie einen LIKE-Operator verwenden, um zu prüfen, ob der Wert in AD_Ref_List.Value ein Teilstring der durch Trennzeichen getrennten Liste ist (auch mit umschlossenen Trennzeichen).
Hier ist eine überarbeitete Abfrage, die diese Änderungen enthält:
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;
Durch das Umschließen der Werte in Trennzeichen teilt diese Abfrage die VARCHAR-Spalte effektiv in mehrere Werte auf, sodass Sie die Ergebnisse basierend darauf filtern können die Werte in der anderen Tabelle.
Beachten Sie, dass diese Abfrage zwar möglicherweise die gewünschte Funktionalität bietet, aber möglicherweise nicht der effizienteste Ansatz ist. Wenn möglich, wird generell empfohlen, die Manipulation getrennter Listen in SQL zu vermeiden, da dies zu Komplexitäts- und Leistungsproblemen führen kann. Erwägen Sie stattdessen die Verwendung einer geeigneteren Datenstruktur, beispielsweise eines Arrays oder JSON-Objekts, um Ihre Daten zu speichern und zu bearbeiten.
Das obige ist der detaillierte Inhalt vonWie teile ich eine VARCHAR-Spalte mithilfe von Trennzeichen in mehrere Werte in SQL auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!