我有一个具有以下形式值的列:
AB232/10D20
A232/10D20
232/10D20
如何在mysql中提取三个数字?我想分别获取232
,10
和20
,并将其插入其他列。
例如,如果包含这些值的列被称为original_column
,那么我需要的查询是这样的:
update mytable
set number_one = something(original_column),
number_two = something2(original_column),
number_three = something3(original_column)
答案 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)
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来改进正则表达式。