【发布时间】:2017-03-28 04:48:29
【问题描述】:
假设我有一个 Postgres 数据库,其中包含一个名为“test”的简单表:
id
--
1
2
3
还有一个枚举定义:
CREATE TYPE MyEnum AS ENUM ('UNKNOWN', 'TEST')
现在,我可以在我的表中添加一个枚举值列:
ALTER TABLE test ADD COLUMN my_enum MyEnum;
UPDATE test SET my_enum = 'UNKNOWN'::MyEnum WHERE id = 1;
UPDATE test SET my_enum = 'TEST'::MyEnum WHERE id = 2;
结果是:
> SELECT * FROM test;
id | my_enum
----|--------
1 | UNKNOWN
2 | TEST
3 |
my_enum 在第 3 行有什么值?有没有办法表达?我试过SELECT COUNT(*) FROM test WHERE my_enum != ''::MyEnum 和SELECT COUNT(*) FROM test WHERE my_enum = null::MyEnum 和SELECT COUNT(*) FROM test WHERE my_enum != ALL(enum_range(null::MyEnum))。在第一种情况下,我收到一个错误(“枚举 myenum 的输入值无效:”“”)。在另外两个中,我只得到“count: 0”。
似乎没有办法在 Postgres 的第 3 行中表达 my_enum 的值 :(。我怎样才能只过滤那些设置了 my_enum 的行?
【问题讨论】:
-
SELECT COUNT(*) FROM test WHERE my_enum IS NOT NULL
-
我认为 Alex 的意思是
SELECT * FROM test WHERE my_enum IS NULL
标签: postgresql enums null