Это похоже на работу:
SUBSTRING_INDEX (SUBSTRING_INDEX (контекст, '', 1), '' , -1))
SUBSTRING_INDEX (SUBSTRING_INDEX (контекст, '', 2), ' ' -1))
SUBSTRING_INDEX (SUBSTRING_INDEX (контекст,', ' 3),',', - 1))
SUBSTRING_INDEX (SUBSTRING_INDEX (контекст, '', 4), '', -1))
это означает, что 1-е значение, 2, 3, и т.д.
Пояснение:
внутренний substring_index
возвращает первые n значений, разделенных запятой. Поэтому, если ваша исходная строка «34,7,23,89», substring_index(context,',', 3)
возвращает «34,7,23».
Внешнее substring_index
принимает значение, возвращаемое внутренним substring_index
, а -1
позволяет взять последнее значение. Таким образом, вы получаете «23» от «34,7,23».
Вместо -1
, если вы укажете -2
, вы получите «7,23», так как оно заняло последние два значения.
Пример:
select * from MyTable where substring_index(substring_index(prices,',',1),',',-1)=3382;
Здесь prices
это имя столбца в MyTable
.
Мне пришлось использовать substring_index (substring_index ('column', ',', - 1), ',', 1), чтобы получить второе значение. Использование -2 последовательно дало мне первое значение. Тем не менее, он отлично работал. :) –
Индексы в этом ответе немного запутываются, когда вы добавляете больше строк. – Tom