gpt4 book ai didi

sql - 您将如何在 SQL 脚本中强制执行 DRY(不要重复自己)?

转载 作者:行者123 更新时间:2023-12-04 14:32:55 24 4
gpt4 key购买 nike

我正在使用包含一些更新的脚本更改数据库(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", ...}),然后在其上迭代单个更新查询。

  • 谢谢!

    最佳答案

    我会将其简化为单个查询:

    UPDATE customer
    SET status = REPLACE(REPLACE(status, 'X_Y', 'xy'), 'X_Z', 'xz')
    WHERE status REGEXP_LIKE 'X_[YZ]'
    AND category_id IN
    (SELECT id
    FROM category
    WHERE code = 'ABC');

    关于sql - 您将如何在 SQL 脚本中强制执行 DRY(不要重复自己)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/685512/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com