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
.