是否可以通过规则(CREATE RULE myrule AS ON SELECT TO mytable
...)替换SELECT语句的WHERE子句中的单词?
SELECT col1, col2
FROM mytable
WHERE col2 = 1;
应该成为
SELECT col1, col2
FROM mytable
WHERE col3 = 1;
初始声明由不允许替换的客户发布。因此,替换必须在数据库端完成。
**编辑**
我可能不够具体。 我需要一个列名替换select语句的这种模式。 WHERE子句不断变化。以及 是否可以在规则本身中引用当前的SELECT语句?
根据我的需要将其分解为最低限度:
答案 0 :(得分:1)
使用case when
声明
SELECT col1, col2, col3
FROM mytable
WHERE CASE WHEN foo='bar' THEN col3 ELSE col1 END = 1;