SQL REPLACE 可以同时充当字符串和子字符串的"find and replace"吗?



我有一个盒子里的盒子数据库。最大嵌套深度为 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 |

不,这是不可能的。SQL UPDATE with REPLACE 不能用作"查找和替换"。SQL 没有此功能。

最新更新