UPDATE table_name SET column_name = CONCAT('new_prefix', SUBSTRING(column_name, length_of_prefix +1)) WHEREcondition;
示例:
假设我们有一个邮政编码字段postal_code,现在需要将其前两位数字由”12”改为”98”。
1 2 3
UPDATE addresses SET postal_code = CONCAT('98', SUBSTRING(postal_code, 3)) WHERE LENGTH(postal_code) >=2;
使用正则表达式
MySQL支持正则表达式,我们可以使用REGEXP_REPLACE函数实现对前几位数字的修改。
1 2 3
UPDATE table_name SET column_name = REGEXP_REPLACE(column_name, 'pattern', 'replacement') WHEREcondition;
示例:
假设我们有一个订单号字段order_id,现在需要将其前四位数字由”1234”改为”5678”。
1 2 3
UPDATE orders SET order_id = REGEXP_REPLACE(order_id, '^1234', '5678') WHERE order_id REGEXP '^1234';
使用CASE语句
在某些复杂情况下,我们可以使用CASE语句根据条件来修改字段的前几位数字。
1 2 3 4 5 6 7 8 9
UPDATE table_name SET column_name = CASE WHEN condition_1 THEN new_value_1 WHEN condition_2 THEN new_value_2 ... ELSE column_name END WHEREcondition;
示例:
假设我们有一个产品编码字段product_code,现在需要根据不同的条件修改其前三位数字。
1 2 3 4 5 6 7 8
UPDATE products SET product_code = CASE WHEN category ='A'THEN CONCAT('111', SUBSTRING(product_code, 4)) WHEN category ='B'THEN CONCAT('222', SUBSTRING(product_code, 4)) ELSE product_code END WHERE LENGTH(product_code) >=3;
使用数字运算
在某些情况下,我们可以通过数字运算来修改字段的前几位数字,特别是当数字具有规律性时。
示例:
假设我们有一个订单号字段order_number,现在需要将其前两位数字加上固定值10。
1 2 3
UPDATE orders SET order_number = order_number +10 WHERE order_number >=1000AND order_number <2000;