我有一个名为myTable
的表,该表具有一个名为col1
的列。此列包含以下格式的数据:(1或2位数字)(连字符)(5到10位数字)(0或1个字符)。
我想替换此列中的所有数据,并将连字符之前的所有内容替换为4,所以这是一个示例:
--------------------------------
| old values | New Values |
--------------------------------
| 1-6542835 => 4-6542835 |
| 2-46786283x => 4-46786283x |
| 8-478934293 => 4-478934293 |
| 12-573789 => 4-573789 |
| 16-5747385z => 4-5747385z |
--------------------------------
我正在使用MySQL 5.7.19,我认为REGEXP_REPLACE在MySQL 8+中可用...不确定如何实现?
我刚刚问了a similar问题...但是后来意识到这是一个简化的方案...由于已经回答了该问题,所以我不想编辑它,因此提出了一个新问题。
SELECT CONCAT( @new_prefix, SUBSTRING(old_value FROM LOCATE('-', old_value)) ) AS new_value
UPDATE sourcetable
SET fieldname = CONCAT( '4', SUBSTRING(fieldname FROM LOCATE('-', fieldname)) )
WHERE LOCATE('-', fieldname)
/* AND another conditions */