我有一列包含以下格式的字符串值AB12345678
:两个字母后跟 8 个数字。
5
我需要编写一个 MySQL 查询来在每组 4 位数字变为 之前AB12345678
插入a AB5123455678
。
我很接近,以下内容适用于列中的一个值,但不适用于多个值 - 所有值都使用看起来相同的第一个值写入。
SELECT @twoeight := os_grid_ref FROM projects WHERE os_grid_ref REGEXP '[A-Z]{2}[0-9]{4}[0-9]{4}';
SELECT @prefix1 := SUBSTR(@twoeight,1,2);
SELECT @part1 := SUBSTR(@twoeight,3,4);
SELECT @part2 := SUBSTR(@twoeight,7,4);
UPDATE projects SET os_grid_ref=CONCAT(@prefix1,'5',@part1,'5',@part2) WHERE os_grid_ref REGEXP '[A-Z]{2}[0-9]{4}[0-9]{4}';
我需要调整什么,以便查询可以单独修改列中的每个值。
谢谢。
如果您需要更改这些内容:
如果表很大,Update会花费很长时间。
WHERE
如果您想更改每一行,请省略该子句。如果您在获取时更改值,那么
如果您希望执行此操作的变体,请考虑编写 a
STORED FUNCTION
来执行CONCAT
.