首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于从特定字符串中提取数字的Mysql正则表达式或函数

用于从特定字符串中提取数字的Mysql正则表达式或函数
EN

Stack Overflow用户
提问于 2017-01-28 21:46:47
回答 3查看 4.8K关注 0票数 1

我有一个列,它具有表单的值:

代码语言:javascript
运行
复制
AB232/10D20
A232/10D20
232/10D20

如何在mysql中提取这三个数字?我希望分别获得2321020,并将它们插入其他列中。

例如,如果包含这些值的列称为original_column,则我需要的查询如下所示:

代码语言:javascript
运行
复制
update mytable
set number_one = something(original_column),
number_two = something2(original_column),
number_three = something3(original_column)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-28 22:39:46

使用找出超负荷函数尝试以下查询:

代码语言:javascript
运行
复制
UPDATE mytable
SET number_one = SUBSTRING(original_column, LOCATE('/', original_column) - 3, 3),
    number_two = SUBSTRING(original_column, LOCATE('/', original_column) + 1, 2),
    number_three = SUBSTRING(original_column, -2, 2)
票数 1
EN

Stack Overflow用户

发布于 2017-01-28 22:18:53

中间的数字很容易。如果我们假设最后一个数字和第一个数字总是3和2个字符,那么它们是非常容易的。

代码语言:javascript
运行
复制
update mytable
    set number_one = right(substring_index(original_column, '/', 1), 3),
        number_two = substring_index(original_column, '/', -1) + 0,
        number_three = right(original_column, 2);

如果列的长度不完全相同,还可以使用其他技巧。但是在你的例子中,所有的值都有相同的长度。

票数 1
EN

Stack Overflow用户

发布于 2017-01-28 21:50:56

使用regex拆分它时,请使用组特性。使用非数字分隔符拆分3个数字的正则表达式(仅用于整数)为

(0-9)^0-9(0-9)^0-9(0-9*)

使用regex测试仪来改进正则表达式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41915190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档