从文本 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 以从文本中提取日期时遇到问题