陆特过后DIY 2021-03-09 12:37 采纳率: 100%
浏览 1138
已采纳

mysql中正则表达式如何提取连续的数字串

原始数据如下(希望提取到连续的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

烦请大佬指点一下

  • 写回答

5条回答 默认 最新

  • 有问必答小助手 2021-03-15 14:45
    关注

    您好,我是问答小助手,你的问题已经很多小伙伴为您解答了问题,您看下是否解决了您的问题。

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 愤世嫉俗的胖子 2021-03-10 11:12
    关注

    regexp 一般用在 where 子句中,用于返回 1/0. 如果想用正则提取子串的话,可以用 regexp_substr(name, '[0-9]{8}') 直接取。

    评论
  • 陆特过后DIY 2021-03-11 23:30
    关注

    同步此问题处理进度,因mysql版本非8.0,无法使用REGEXP_SUBSTR();

    于是编写了python程序读取数据库数据经正则处理以后重新写入数据库,但数据库约400万条数据,SELECT扫描过久,放弃;

    最终采用把数据导入csv以后,使用EmEditor的CSV模式,加上正则匹配,几分钟处理掉问题,重新把处理后的数据上传数据库,问题解决!

    评论
  • Holyrisk 2022-01-04 15:00
    关注

    这个用 mysql 可以处理的,不过需要mysql 写存储函数调用,你可以参考这篇文章 MySQL字符串提取数字
    https://vqbook.com/index/details/article/202/keyworlds/https://ask.csdn.net/questions/7404760

    评论
  • CSDN问答专家001 2021-03-09 13:20
    关注

    你应该是理解错了REGEXP用法了,REGEXP是正则表达式:

    name REGEXP '[0-9]{8}'
    
    #返回的值是1或者0

    所以你上面写的有问题,想获得其中数字的话,可以用substring函数

    select substring(substring(name FROM -12),1,8) from 表;
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥60 悬赏求解,通过实时现场摄像头的视频图像识别其他对家打出的麻将牌,识别麻将牌,识别牌墙位置,通过识别对家打出了什么牌
  • ¥15 关于#GPU jetson#的pcie驱动开发问题,如何解决?
  • ¥15 stm32f103zet6 串口5无法收发数据
  • ¥15 关于C语言使用线程队列实现多线程并发
  • ¥15 这个运行,错误在哪里呀,大家看看吧,教导我
  • ¥15 advanceinstaller对话框设置
  • ¥100 正常上网,内部网页无法打开
  • ¥15 组件库引入并使用在若依框架未展示
  • ¥149 关于#使用python 的Flash Echarts+ajax+mysql动态数据实现饼图#的问题,请各位专家解答!
  • ¥15 RichTextBox中追加文本时报错