我有一个定义了integer_array字段的表格。它包含以下数据:
id | black_list
----+------------
4 |
5 |
8 |
12 |
6 |
7 |
10 | {5}
13 | {5}
3 | {}
9 | {3}
11 | {}
14 | {}
1 | {}
2 | {}
15 | {}
16 | {}
17 | {}
(17 rows)
我需要编写一个查询来查看数组字段是否为空 - NULL或其他。问题在于{}
值既不为空,也不返回任何ARRAY_LENGTH函数的长度。由http://www.postgresql.org/docs/8.4/static/functions-array.html列出的其他数组函数似乎也不是我所需的。我发现我可以编写ARRAY_LENGTH(0 || black_list)
以便让它们全部返回1或更多的长度,但那似乎是一个可怕的技巧。有没有正确的方法来测试这个问题呢?
奖励问题:究竟{}
代表什么?我无法编写一个选择语句来返回该值。 ARRAY[]
会抛出错误,ARRAY[""]
返回{""}
,ARRAY[NULL]
返回{NULL}
,等等。
ARRAY_LENGTH(provider_black_list, 1) IS NULL
运行得非常好。感谢您的建议。 - Chris Bloom