Есть ли способ разделить 2 значения в столбце на два отдельных столбца? - PullRequest
0 голосов
/ 03 января 2019

Проблема заключается в сортировке фильмов по идентификатору фильма и разделении заголовка и года на отдельные столбцы в MySQL. Сортировка фильмов не является проблемой, но я пытаюсь разделить столбец с двумя наборами данных в нем. Один - название фильма, а другой - год выпуска фильма.

Примерами являются «История игрушек (1998)», «Железный великан (1999)».

Желаемый вывод будет иметь столбец заголовка и соответствующий столбец года для этих фильмов.

Существует около миллиона столбцов, для которых мне пришлось бы разделить название фильма и год. Есть ли в любом случае это MySQL?

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Я бы просто использовал substring_index() для этого:

select substring_index(titleyear, ' (', 1) as title,
       substring_index(titleyear, ' (', -1) + 0 as year

Вторая часть использует неявное преобразование для сохранения значения в виде года.

Вы также можете извлечь год какстрока с использованием:

substr(titleyear, -5, 4) as year
0 голосов
/ 03 января 2019

Мы можем попробовать использовать SUBSTRING_INDEX и INSTR здесь:

SELECT
    SUBSTRING(title, 1, INSTR(title, '(') - 2) AS name,
    REPLACE(REPLACE(SUBSTRING_INDEX(title, ' ', -1), '(', ''), ')', '') AS year
FROM yourTable;

enter image description here

Демо

Мы выделяем название фильма, взяв подстроку, но не включая первый пробел и открывающую скобку.Год определяется путем взятия последнего срока и удаления открывающих и закрывающих скобок.

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