当前位置:  开发笔记 > 编程语言 > 正文

你会如何在SQL脚本中强制执行DRY(不要重复自己)?

如何解决《你会如何在SQL脚本中强制执行DRY(不要重复自己)?》经验,为你挑选了1个好方法。

我正在使用包含一些更新的脚本来更改数据库(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...

在这种情况下,你将如何强制干(不要重复自己)?

我特别感兴趣的是解决以下两个反复出现的问题:

定义仅从此脚本可用的函数,以提取子查询 SELECT id FROM category WHERE code = 'ABC'

创建一组替换规则(可能看起来像{"X_Y": "yx", "X_Z": "xz", ...}一种流行的编程语言),然后在其上迭代单个更新查询.

谢谢!



1> soulmerge..:

我会把它减少到一个查询:

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');

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有