sql >> Databáze >  >> RDS >> Mysql

Převod řetězce s oddělovači na více hodnot v mysql

Tomu se říká chůze po provázku . Zde je příklad toho, jak to můžete udělat s poskytnutými specifikacemi:

Budete muset vytvořit tabulku, která obsahuje tolik celých čísel, kolik je délka pole + 1. Pokud je tedy délka pole 255, budete potřebovat 256 záznamů, které obsahují pouze jedno číslo od 0 do 255.

int_table :

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

Dále budete potřebovat dotaz, který se připojí k této tabulce a zkontroluje, zda v tomto umístění existuje čárka nebo ne. (Vaši tabulku jsem nazval legacy_table pomocí polí client a items , respektive.)

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) = ',')
  )

Možná to pro vás není dostatečně efektivní, abyste to skutečně používali, ale řekl jsem si, že to uvedu jako příklad, abyste věděli, co je k dispozici.



  1. Výsledky MySQL jako seznam oddělený čárkami

  2. Syntaxe SQL DROP TABLE – Zobrazuje DBMS

  3. Co je STATISTICS TIME v SQL Server?

  4. líný dotaz clojure.java.jdbc