我正在使用包含一些更新的脚本更改数据库(oracle),如下所示:
UPDATE customer
SET status = REPLACE(status, 'X_Y', 'xy')
WHERE status LIKE '%X_Y%'
AND category_id IN
(SELECT id
FROM category
WHERE code = 'ABC');
UPDATE customer
SET status = REPLACE(status, 'X_Z', 'xz')
WHERE status LIKE '%X_Z%'
AND category_id IN
(SELECT id
FROM category
WHERE code = 'ABC');
-- More updates looking the same...
在这种情况下,您将如何执行 DRY(不要重复自己)?
我对解决以下两个反复出现的问题特别感兴趣:
定义一个仅可从此脚本中获得的函数以提取子查询
SELECT id FROM category WHERE code = 'ABC'
创建一组替换规则(可能类似于
{"X_Y": "yx", "X_Z": "xz", ...}
流行的编程语言),然后在其上迭代单个更新查询。
谢谢!