如何使用MySQL用新数字替换连字符之前的所有数字?

问题描述 投票:1回答:1

我有一个名为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问题...但是后来意识到这是一个简化的方案...由于已经回答了该问题,所以我不想编辑它,因此提出了一个新问题。

mysql sql mysql-5.7
1个回答
0
投票
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 */
© www.soinside.com 2019 - 2024. All rights reserved.