【发布时间】:2012-09-29 23:33:15
【问题描述】:
我需要一种方法来搜索 SQL 查询中的单词,并能够确定该单词是在子查询中还是在主查询中。
例如:
SELECT *
FROM products
WHERE id NOT IN (SELECT product_id
FROM tagmap
WHERE tag_id = 1)
我需要在查询字符串中将单词WHERE 的实例替换为WHERE 1=1 AND,但仅限于主查询中,而不是子查询中。
这只是我面临的问题的一个例子。真正的查询比这大得多,并且包含几个子查询!此外,我需要为数百个查询执行此操作,因此我需要能够自动执行此操作。
【问题讨论】:
-
只要
WHERE不在( .. )中,您是否只需将WHERE的任何实例替换为WHERE 1=1 AND即可?您是否需要在文本/查询编辑器中执行此操作,或者以编程方式通过例如 sql 脚本文件(在这种情况下,哪种语言?) -
是的,这就是我要找的。我最好使用文本编辑器来做到这一点。
-
是否有
WHERE需要替换总是在左边距,而子查询总是缩进? -
不,上面的布局只是语法高亮——它通常只是一个内联字符串。