有没有办法把列中的2个值分成两个独立的列?

kgsdhlau  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(292)

问题是在mysql中按电影id对电影进行排序,并将标题和年份拆分为单独的列。排序电影不是一个问题,但我正在尝试分离一列中有两组数据。一个是电影的标题,另一个是电影发行的年份。
例如《玩具总动员》(1998)、《钢铁巨人》(1999)。
期望的输出是为这些电影设置标题栏和相应的年份栏。
大约有超过一百万个专栏,我不得不把电影的标题和年份分开。这是mysql吗?

41zrol4v

41zrol4v1#

我们可以试着用 SUBSTRING_INDEX 以及 INSTR 在这里:

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

演示

我们通过在第一个空格和左括号前加一个子串(但不包括第一个空格)来隔离电影的名称。年份是通过取最后一个词并去掉左括号和右括号来确定的。

m2xkgtsf

m2xkgtsf2#

我只想用 substring_index() 为此:

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

第二部分使用隐式转换将值存储为一年。
您还可以使用以下命令将年份提取为字符串:

substr(titleyear, -5, 4) as year

相关问题