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

时间:2017-01-28 21:46:48

标签: mysql sql regex

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

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 个答案:

答案 0 :(得分:1)

中间的数字很简单。如果我们假设它们总是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);

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

使用regex tester来改进正则表达式。