繁体   English   中英

MySQL正则表达式或函数,用于从特定字符串中提取数字

[英]Mysql regular expression or function for extracting numbers from a specific string

我有一列具有以下形式的值:

AB232/10D20
A232/10D20
232/10D20

如何在mysql中提取三个数字? 我想2321020分别和其他列插入。

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

update mytable
set number_one = something(original_column),
number_two = something2(original_column),
number_three = something3(original_column)

中间的数字很容易。 如果我们假设最后一个数字和第一个数字始终为3和2个字符,则它们非常简单。

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);

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

使用LOCATESUBSTRING函数尝试以下查询:

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)

使用正则表达式拆分时,请使用组功能。 使用非数字定界符(仅用于整数)分割3个数字的正则表达式为

([0-9] )[^ 0-9] ([0-9] )[^ 0-9] ([0-9] *)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM