Подтвердить что ты не робот

MySQL Второй (или третий) индекс в строке

Каким будет самый простой способ найти индекс третьего пространства в строке.

Моя цель - вывести CCC из этого списка, разделенного пробелами: AAAA BBBB CCCC DDDD EEE. где A и B и D - фиксированная длина, а C - переменная длина, E F G являются необязательными.

В Java я бы использовал indexof, с начальной точкой 10, и это обеспечило бы мне третье пространство, но кажется, что я не могу сделать это в MySQL, поэтому я подумал, что, может быть, я мог бы найти функцию "третьего индекса"

4b9b3361

Ответ 1

Вы хотели бы использовать функцию SUBSTRING_INDEX, подобную этой

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(field, ' ', 3), ' ', -1)
FROM table

Внутренний вызов функции приведет вас к AAAA BBBB CCCC, в то время как вызов внешней функции будет парировать это только до CCCC.

Ответ 3

Как правило, вы можете выбрать nth слово в строке, используя:

SET @N = 3; -- 3rd word
SET @delimiter = ' ';
SELECT
  SUBSTRING_INDEX(SUBSTRING_INDEX(words, @delimiter, @N), @delimiter, -1)
FROM
  my_table