如何使用SQL replace()来更新一行中的多个字符实例?

时间:2016-09-08 17:46:15

标签: sql sql-update

我需要将一行中的多个字符替换为一行中的另一列。

示例:

+---------+---------+----------+------------------+
|   id    |   name  |   code   |     handler      |
+---------+---------+----------+------------------+
|    1    |   ben   |    1,2   |   41 and 67      |
|    2    |   ken   | 43,2,3   |  (1 or 2) and 3  |
|    3    |   ana   |   12,67  |    13 or 12      |
+---------+---------+----------+------------------+

我的数据库中有这些数据。我想根据handler列修改我的code。在包含id = 1的示例中:我需要1来替换41; 2替换67;等等。

这应该是预期的结果:

+---------+---------+----------+------------------+
|   id    |   name  |   code   |     handler      |
+---------+---------+----------+------------------+
|    1    |   ben   |    1,2   |    1 and 2       |
|    2    |   ken   | 43,2,31  | (43 or 2) and 31 |
|    3    |   ana   |   12,67  |    12 or 67      |
+---------+---------+----------+------------------+

目前我只能替换单个实例,例如sql replace()

REPLACE(handler, handler, code)

1 个答案:

答案 0 :(得分:0)

您可以像这样尝试嵌套REPLACE

REPLACE (REPLACE(column_name, old_value, new_value), old_value, new_value)

要找出需要替换的字符的位置,您可以使用CHARINDEXCHARINDEXSUBSTRING的组合