我的表中有 [id, account_id] 列。这些值是
+------+----------------+
| id | account_id |
+------+----------------+
| 1 | 01-01-02-0007 |
| 2 | 04-05-06-0001 |
| 3 | 03-07-09-0001 |
| 4 | 03-04-04-0001 |
| 5 | 03-04-08-0101 |
| ... |
| 201 | 03-04-08-0111 |
+------+----------------+
我想要的是替换 -
之后每个 account_id
的最后一部分,即 0007
、0001
和 0001
等,在这种情况下具有各自的 id
(但仍然在左侧填充 0
以使其成为 4 个字符)。更具体地说,以下是我想要实现的目标:
+------+----------------+
| id | account_id |
+------+----------------+
| 1 | 01-01-02-0001 |
| 2 | 04-05-06-0002 |
| 3 | 03-07-09-0003 |
| 4 | 03-04-04-0004 |
| 5 | 03-04-08-0005 |
| .... |
| 201 | 03-04-08-0201 |
+------+----------------+
我想使用REPLACE
,但不幸的是,这不能应用于我的情况,因为它不仅仅是我想要更改的部分(每个值保持相同)。我一直在寻找,但我无法实现这一目标。我想,我必须以某种方式使用一些正则表达式和 LPAD 来实现这一目标,但不确定如何实现。
谁能给我一些启发吗?
最佳答案
对于您显示的具有固定帐号长度的非常简单的情况,这样做就可以了;
UPDATE accounts
SET account_id=CONCAT(LEFT(account_id,9), LPAD(id, 4, '0'))
关于mysql - 用表的 id 替换字符串值的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22268378/