原始数据如下(希望提取到连续的8位数字):
name SS
师傅门前桃花多_13577924.zip
《独联体国家“颜色革命”研究》12781713.zip
使用的mysql语句:
UPDATE 表 SET SS =name REGEXP '[0-9]{8}'
期望得到的结果:
name SS
师傅门前桃花多_13577924.zip 13577924
《独联体国家“颜色革命”研究》12781713.zip 12781713
最后得到的结果只有0
烦请大佬指点一下
您好,我是问答小助手,你的问题已经很多小伙伴为您解答了问题,您看下是否解决了您的问题。
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
regexp 一般用在 where 子句中,用于返回 1/0. 如果想用正则提取子串的话,可以用 regexp_substr(name, '[0-9]{8}') 直接取。
同步此问题处理进度,因mysql版本非8.0,无法使用REGEXP_SUBSTR();
于是编写了python程序读取数据库数据经正则处理以后重新写入数据库,但数据库约400万条数据,SELECT扫描过久,放弃;
最终采用把数据导入csv以后,使用EmEditor的CSV模式,加上正则匹配,几分钟处理掉问题,重新把处理后的数据上传数据库,问题解决!
这个用 mysql 可以处理的,不过需要mysql 写存储函数调用,你可以参考这篇文章 MySQL字符串提取数字
https://vqbook.com/index/details/article/202/keyworlds/https://ask.csdn.net/questions/7404760
你应该是理解错了REGEXP用法了,REGEXP是正则表达式:
name REGEXP '[0-9]{8}'
#返回的值是1或者0
所以你上面写的有问题,想获得其中数字的话,可以用substring函数
select substring(substring(name FROM -12),1,8) from 表;