mysql,如何用sql语句实现,用正则匹配url字段里的数字id,然后存入另一个字段

12ers_梦骑士 2018-02-12 11:27:50
CREATE TABLE `testvarchar` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`urlId` int(10) unsigned NOT NULL DEFAULT '0',
`url` varchar(1000) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

insert into testvarchar (url) values ('https://www.abc.com/xxx/22277598?preview_for_ml=true'),('https://www.abced.jp/xxx/13008554'),('http://cd.qwer.com/asdf/17996991703.html'),('https://www.asd.com/zxc/ical/21853688.ics?s=92503680b6e4692f6a364503048bb964');

现在urlId字段需要得到对应的url里的数字id
分别是22277598,13008554,17996991703,21853688

请问怎么用sql实现?
...全文
1020 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2018-02-12
  • 打赏
  • 举报
回复
上述查询的规则是取 / 分隔的最后一段 对于最后一段,再截取 ? . 之前的部分,如果没有这两个字符,则取全部数据
zjcxc 2018-02-12
  • 打赏
  • 举报
回复
MySQL 中没有正则表达式的取值函数,针对你提供的数据特征,可以用下面的方法:

SELECT *, 
	SUBSTRING_INDEX( REPLACE(SUBSTRING_INDEX(url, '/', -1), '?', '.'), '.', 1) as 数字
FROM testvarchar
Secends_ 2018-02-12
  • 打赏
  • 举报
回复
SELECT testvarchar.*, REGEXP_SUBSTR (url, '[0-9]+') as n FROM testvarchar; 这条语句运行后 n就是 你想要截取的那段数字 具体的 你看看修改把

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧