有没有一种方法可以将一列中的2个值分成两个独立的列?

时间:2019-01-03 05:02:33

标签: mysql sql

问题是按电影ID对电影进行排序,并将标题和年份分成MySQL中的单独列。对电影进行排序不是问题,但是我试图将其中包含两组数据的列分开。一个是电影的标题,另一个是电影的发行年份。

例如“玩具总动员(1998)”,“铁巨人(1999)”。

所需的输出将是这些电影的标题列和相应的年份列。

我将不得不拆分大约一百万列电影标题和年份。反正是MySQL吗?

2 个答案:

答案 0 :(得分:2)

我们可以在此处尝试使用SUBSTRING_INDEXINSTR

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

enter image description here

Demo

我们通过使用一个子串来隔离电影的名称,该子串最多但不包括第一个空格和左括号。可以通过取最后一个学期并删除左括号和右括号来找到年份。

答案 1 :(得分:0)

我将为此使用substring_index()

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

第二部分使用隐式转换将值存储为一年。

您还可以使用以下方式将年份提取为字符串:

substr(titleyear, -5, 4) as year