我从使用Oracle知道可以使用带有CASE语句的条件索引。但是在PostgreSQL中有可能吗?例如索引如下:
CREATE INDEX IX_INDEXNAME ON SOME_TABLE (
CASE
WHEN COLUMN1 = 0 AND COLUMN2 = 'value' THEN SOME1_ID
ELSE SOME2_ID
END);
这已经是PostgreSQL的修改版本,因为Oracle case语句与Postgres不同。如果这是可能的,我该怎么做?或者,如果这是不可能的,还有另一种方法来实现它吗?
答案 0 :(得分:2)
您需要将CASE
表达式括在括号中:
CREATE INDEX IX_INDEXNAME ON SOME_TABLE (
(CASE
WHEN COLUMN1 = 0 AND COLUMN2 = 'value' THEN SOME1_ID
ELSE SOME2_ID
END) );