【问题标题】:Extract OrderID from Text MySql从文本 MySql 中提取 OrderID
【发布时间】:2018-10-16 06:56:42
【问题描述】:

我想从文本列中提取像 306-3584295-9664328 这样的数字。格式始终相同,但数字前面也可以是该数字后面的文本。例如。

Blblblbla xxx-xxxxxxx-xxxxxxx Blblalblala

我找到了这个 \w\d{2}-?\d{7}-?\d{7} 的正则表达式,但我不能将它与 mysql 一起使用。

我想要实现的是从一列中提取此数字并将其添加到新列中。只是数字。

到目前为止,我尝试的一切都没有成功。 不幸的是,我还是一个初学者,希望你能帮助我。

再见,克里斯蒂安

【问题讨论】:

    标签: mysql sql regex user-defined-functions


    【解决方案1】:

    使用 REGEXP_REPLACE() 函数替换非数字 val - 它适用于 mysql 8+ 版本/MariaDB

    DEMO

    SELECT REGEXP_REPLACE ('Blblblbla 234-4565979-4564646 Blblalblala','[a-zA-Z]+', '') as content
    

    要插入表格,您可以使用以下代码

    insert into tablename(textval,orderid) 
       select 'Blblblbla 234-4565979-4564646 Blblalblala' as textval,REGEXP_REPLACE ('Blblblbla 234-4565979-4564646 Blblalblala','[a-zA-Z]+', '') as orderid
    

    或者,如果您的表 - 只需将表名和列名替换为您想要的表和列名

    insert into testtable(textval,orderid) 
           select colname as textval,REGEXP_REPLACE (colname,'[a-zA-Z]+', '') as orderid from tablename
    

    【讨论】:

    • 感谢 fa06。不幸的是,我不能使用 mysql 8,只能使用 mariadb。有没有类似的说法可以解决我的问题?
    • 你的maiadb版本是多少@ChristianMazilu
    • Mariadb 10.2.17
    • @ChristianMazilu,它也可以在 mariadb 中工作-在这里查看dbfiddle.uk/…
    • 太棒了!谢谢你的帮助。但我需要在新/其他列中写下这个数字。我应该使用更新语句来执行此操作吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多