次のようないくつかの更新を含むスクリプトを使用してデータベース(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(Do n't Repeat Yourself)をどのように実施しますか?
私は特に、次の2つの繰り返し発生する問題を解決することに興味があります。
サブクエリを抽出するために、このスクリプトからのみ使用可能な関数を定義します
SELECT id FROM category WHERE code = 'ABC'
一連の置換ルール(一般的なプログラミング言語のように見える可能性があります
{"X_Y": "yx", "X_Z": "xz", ...}
)を作成し、それに対して単一の更新クエリを繰り返します。
ありがとう!