Извлечь подстроки в отдельные столбцы SQL - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь извлечь определенные части строки в отдельный столбец, но не могу понять, как это сделать. Моя база данных выглядит так: http://sqlfiddle.com/#!9/10084a9/2

`CREATE TABLE IF NOT EXISTS `profile` (
  `user` varchar(200) NOT NULL
) DEFAULT CHARSET=utf8;

INSERT INTO `profile` (`user`) VALUES
  ("history/myprofile/Alice/1992/30.pdf"),
  ("location/area/active/Nyme/2000/1/12/1002");

enter image description here и я хочу создать в базе данных столбцы, представляющие извлеченные значения, которые всегда будут последними 3 или 5 в приведенной выше строке, например, это мой желаемый вывод из таблицы выше.

enter image description here

Что я пробовал:

select * SPLIT_PART(user,'/', 3) as name
FROM profile ;

В некоторых случаях это работает, если строка находится в правильном положении в этом случае 3, но если нет, то извлекает неправильную строку. РЕДАКТИРОВАТЬ Строка не имеет какой-либо общей подстроки, но если это облегчает задачу, мне действительно нужны только цифры с конца, и это единственные числа в столбце пользователя, например, 1992/30 и 2000/1/12/1002, которые всегда в конце. Эти числа будут только в последних 2 или 4 позиции перед точкой

1 Ответ

0 голосов
/ 17 мая 2019

Вы можете использовать SUBSTRING_INDEX , чтобы достичь этого, и попробуйте выполнить нижеприведенный пример запроса, но вам нужно иметь стандартные значения для его решения.

SELECT user, SUBSTRING_INDEX(SUBSTRING_INDEX(user, '/', 1), '/', -1) as name,
     SUBSTRING_INDEX(SUBSTRING_INDEX(user, '/', 2), '/', -1) as year,
     SUBSTRING_INDEX(SUBSTRING_INDEX(user, '/', 3), '/', -1) as batch,
     SUBSTRING_INDEX(SUBSTRING_INDEX(user, '/', 4), '/', -1) as status,
     SUBSTRING_INDEX(SUBSTRING_INDEX(user, '/', 5), '/', -1) as value
FROM profile;

SQL FIDDLE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...