首页 > 解决方案 > 空数组的 array_length() 和 cardinality() 返回数组大小之一

问题描述

我有一张像这样的桌子:

CREATE TABLE psdc_psr
(
    id bigint not null,
    available_region_code character varying(255)[],
    is_valid bigint,
)

我想使用array_length()cardinality()available_region_code ='{}'选择空available_region_code 列但它失败了,长度返回一。

在此处输入图像描述

为什么会发生这种情况以及如何解决这个问题。

标签: sqlpostgresql

解决方案


我不知道是什么原因导致了这个问题。也许就像 jjanes 在评论中说的那样,数组有一个非打印字符。

最后,我使用(CAST(ARRAY_TO_JSON(available_region_code) AS VARCHAR) IN ('[null]', '[""]'))检查从问题区域的答案中学习的空数组(如何检查 Postgres 中的数组是否为空)。

打击结果: 在此处输入图像描述


推荐阅读