加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

比较 – 测试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的值)失去理智,似乎就是这样做了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读