Wygląda na to, że działa:
substring_index ( substring_index ( context,',',1 ), ',', -1)
substring_index ( substring_index ( context,',',2 ), ',', -1)
substring_index ( substring_index ( context,',',3 ), ',', -1)
substring_index ( substring_index ( context,',',4 ), ',', -1)
oznacza 1. wartość, 2., 3. itd.
Wyjaśnienie:
Wewnętrzny substring_index zwraca pierwszych n wartości oddzielonych przecinkami. Więc jeśli oryginalny ciąg to „34,7,23,89”, substring_index( context,',', 3) zwraca „34,7,23”.
Zewnętrzny substring_index przyjmuje wartość zwróconą przez wewnętrzny substring_index i -1 pozwala na wzięcie ostatniej wartości. Tak więc otrzymujesz „23” z „34,7,23”.
Zamiast -1 jeśli określisz -2 , otrzymasz „7,23”, ponieważ zajęło dwie ostatnie wartości.
Przykład:
select * from MyTable where substring_index(substring_index(prices,',',1),',',-1)=3382;
Tutaj prices to nazwa kolumny w MyTable .