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.