SQL REPLACE可以在字符串和子字符串上充当“查找并替换”功能吗?

时间:2019-12-17 16:04:28

标签: sql database tsql

我有一个盒子内的盒子数据库。最大嵌套深度为10,因此每个盒子最多可以有9个父级或子级位置。一个字段包含每个框的层次结构-即ABC内的框DEF:

SELECT hierarchy from INVENTORY WHERE boxname = 'DEF'返回“ ABC-> DEF”。

我现在需要允许用户重命名框。我正在尝试使用SQL的REPLACE函数来完成此操作,但据我所知,它不能在子字符串上工作。我尝试过:

update inventory
set hierarchy = replace(hierarchy, 'DEF', 'XYZ')

并且这不会像我期望的那样将层次结构更新为“ ABC-> XYZ”

我希望将其用作“ Ctrl + F查找和替换”功能,但是似乎无法执行以下操作

  1. 查找包含字符串的所有字段,包括子字符串。
  2. 替换给定记录的所有字段中的所有匹配项。

有人知道这两种方法是否确实可行吗?

我正在使用TSQL。

根据要求采样数据:

输入

| name  | parent1  | parent2  | ...  | hierarchy         |
|  ---  |  ---     |  ---     | ---  |   ---             |
| DEF   | ABC      |          |      | ABC -> DEF        |
| JKL   | DEF      |  ABC     |      | ABC -> DEF -> JKL |

输出

| name  | parent1  | parent2  | ...  | hierarchy         |
|  ---  |  ---     |  ---     | ---  |   ---             |
| XYZ   | ABC      |          |      | ABC -> XYZ        |
| JKL   | XYZ      |  ABC     |      | ABC -> XYZ -> JKL |

1 个答案:

答案 0 :(得分:0)

否,这是不可能的。使用REPLACE的SQL UPDATE不能用作“查找并替换”。 SQL没有此功能。