从文本 MySql 中提取 OrderID

Posted

技术标签:

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

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

Blblblbla xxx-xxxxxxx-xxxxxxx Blblalblala

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

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

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

再见,克里斯蒂安

【问题讨论】:

【参考方案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/… 太棒了!谢谢你的帮助。但我需要在新/其他列中写下这个数字。我应该使用更新语句来执行此操作吗?

以上是关于从文本 MySql 中提取 OrderID的主要内容,如果未能解决你的问题,请参考以下文章

在 STR_TO_DATE 中运行 MySQL REGEXP_SUBSTR 以从文本中提取日期时遇到问题

从文本块中提取相关标签/关键字

如何从一系列文本条目中提取常用/重要短语

使用正则表达式从 mysql 列中提取子字符串

使用 MySQL/Presto 提取给定开始和结束模式的字符串

从网站中提取正文文本,例如仅提取文章标题和文本而不是站点中的所有文本