比较 – 测试Postgresql数组字段是空还是空的正确方法是什么
发布时间:2020-12-13 16:01:23 所属栏目:百科 来源:网络整理
导读:我有一个用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) 我需要编写一个查询来查看数组字
我有一个用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或其他.问题是{}值不为null,也不从ARRAY_LENGTH函数返回任何长度. http://www.postgresql.org/docs/8.4/static/functions-array.html中列出的其他数组函数似乎都不是我需要的.我发现我可以写ARRAY_LENGTH(0 || black_list)来让所有这些都返回1或更长的长度,但这看起来像是一个讨厌的黑客.测试这个的正确方法是什么? 奖金问题:{}代表什么?我一直无法编写将返回该值的select语句. ARRAY []抛出错误,ARRAY [“”]返回{“”},ARRAY [NULL]返回{NULL}等. 解决方法
{}似乎代表一个空数组,它可以解释值为NOT NULL和ARRAY_LENGTH({})没有返回任何内容 – 虽然我希望它在{}上返回0,也许这就是我的PostgreSQL特性我不熟悉
有没有理由你不能只测试ARRAY_LENGTH的返回值,例如 SELECT id FROM table WHERE ARRAY_LENGTH(black_list,1) IS NULL OR ARRAY_LENGTH(black_list,1) < 1 假设ARRAY_LENGTH()并没有对空值(例如上面示例中的id = 12的值)失去理智,似乎就是这样做了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |