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

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

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

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


person 700 Software    schedule 15.01.2013    source источник


Ответы (5)


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

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

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

person Mike Brant    schedule 15.01.2013
comment
Отличное объяснение того, как получить индекс элемента по номеру. Итак, если у меня есть csv с 8 элементами, я теперь могу получить любой из этих 8 по номеру .... Очень приятно, большое спасибо, чувак. - person Uncle Iroh; 26.09.2014

Вы можете использовать SUBSTRING_INDEX.

person Kermit    schedule 15.01.2013
comment
Этот ответ только по ссылке меркнет по сравнению с принятым ответом. Я бы сказал, что это даже не ответ, а скорее неуместный комментарий. Он дает некоторое направление, но на самом деле не пытается решить вопрос. - person mickmackusa; 21.05.2018

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

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

используйте приведенный ниже запрос, чтобы найти любой случайный идентификатор из таблицы после группы. Здесь id — это autoincrement_id.

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(id),",",FLOOR(RAND()*COUNT(DISTINCT id))+1),",",-1) AS random_id FROM tableName GROUP BY groupbyColumn

person nierjesh kumar    schedule 12.02.2020

Id Name Department
1 Amit Kumar Sharma Computer Science

*Вы можете извлечь третью строку простым запросом

Запрос :-

SELECT SUBSTRING_INDEX(Name, ' ', -1) as last_name FROM table_name

Выход: - Шарма

person Amit Kumar    schedule 09.02.2021