我有一个盒子里的盒子数据库。最大嵌套深度为 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查找和替换"功能,但似乎无法执行以下操作:
- 查找包含字符串的所有字段,包括作为子字符串的字段。
- 替换给定记录的所有字段中的所有匹配项。
有谁知道这些是否真的可能?
我正在使用 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 没有此功能。