Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Konvertieren von getrennten Zeichenfolgen in mehrere Werte in mysql

Dies wird eine Zeichenfolge durchlaufen genannt . Hier ist ein Beispiel dafür, wie Sie es mit den bereitgestellten Spezifikationen machen könnten:

Sie müssen eine Tabelle erstellen, die so viele ganze Zahlen enthält wie die Länge des Felds + 1. Wenn die Feldlänge also 255 beträgt, benötigen Sie 256 Datensätze, die nur eine einzelne Zahl von 0-255 enthalten.

int_table :

+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+---+

Als nächstes benötigen Sie eine Abfrage, die diese Tabelle verknüpft und überprüft, ob an dieser Stelle ein Komma vorhanden ist oder nicht. (Ich habe Ihre Tabelle legacy_table genannt mit den Feldern client und items .)

select 
  legacy_table.client, 
  substring(
    legacy_table.items, 
    int_table.i + 1, 
    if(
      locate(',', legacy_table.items, int_table.i + 1) = 0, 
      length(legacy_table.items) + 1, 
      locate(',', legacy_table.items, int_table.i + 1)
    ) - (int_table.i + 1)
  ) as item
from legacy_table, int_table
where legacy_table.client = 'xyz001'
  and int_table.i < length(legacy_table.items)
  and (
    (int_table.i = 0) 
    or (substring(legacy_table.items, int_table.i, 1) = ',')
  )

Es ist möglicherweise nicht effizient genug, um es tatsächlich zu verwenden, aber ich dachte, ich stelle es als Beispiel vor, nur damit Sie wissen, was verfügbar ist.