PostgreSQL中的条件索引

PostgreSQL中的条件索引,postgresql,indexing,Postgresql,Indexing,通过使用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语句不同于Postgre

通过使用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。如果可能的话,我该怎么做?或者如果这不可能,是否有其他方法实现它?

您需要将
大小写
表达式括在括号中:

CREATE INDEX IX_INDEXNAME ON SOME_TABLE (
     (CASE 
        WHEN COLUMN1 = 0 AND COLUMN2 = 'value' THEN SOME1_ID
        ELSE SOME2_ID
     END) );

是的,这是可能的。你的问题是什么?如果这是可能的,我该怎么做
是否创建了您拥有的索引?如果不是,是错误吗?[42601]错误:在“CASE”处或附近出现语法错误