从文本MySql中提取OrderID

时间:2018-10-16 06:56:42

标签: mysql sql regex user-defined-functions

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

Blblblbla xxx-xxxxxxx-xxxxxxx Blblalblala

我为此\ w \ d {2}-?\ d {7}-?\ d {7}找到了一个正则表达式,但是我无法在mysql中使用它。

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

到目前为止,我所做的一切都没有成功。 不幸的是,我仍然是一个初学者,希望您能为我提供帮助。

再见,基督徒

1 个答案:

答案 0 :(得分:0)

使用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

如果您的表是OR,只需将表名和列名替换为所需的表名和列名

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