【发布时间】:2019-10-04 17:36:15
【问题描述】:
我正在尝试将字符串的某些部分提取到单独的列中,但不知道该怎么做。我的数据库如下所示: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");
我想在数据库中创建一个列,表示提取的值在上面的字符串中总是最后 3 或 5,例如这是我想要的上表的输出。
我尝试过的:
select * SPLIT_PART(user,'/', 3) as name
FROM profile ;
在某些情况下,如果字符串在这种情况 3 中的位置正确,则此方法有效,但如果不是,则提取错误的字符串。 编辑 该字符串没有任何公共子字符串,但如果它更容易,我真的只需要最后的数字,这些是用户列中唯一的数字,例如 1992/30 和 2000/1/12/1002 是总是在最后。这些数字只会在点前的最后 2 或 4 位
【问题讨论】:
-
“用户”列值是否有任何特定模式?
-
不是真的,抱歉。如果它更容易,我真的只需要最后的数字,这些是用户列中唯一的数字,例如 1992/30 和 2000/1/12/1002 总是在最后。这些数字只会在点之前的最后 2 或 4。