sql - Postgres WHERE 数组包含空字符串

标签 sql arrays json postgresql

我正在尝试执行 select * from demo where demojson->'sub'->'item' = array("") 但这不起作用。我想找到以下内容

  • JSON 列中 .sub.item 是一个只包含一个空字符串 ([""]) 的数组的所有行
  • JSON 列中 .sub.item 的所有行是一个数组,可能包含多个项目,但至少有一个项目是空字符串。 (["不为空", "也不为空", ""])

demojson 列可以包含例如

{ 
  "key": "value",
  "sub": {
    "item": [""]
  }
}

最佳答案

你试过吗

SELECT * from demo 
WHERE demojson->'sub'->>'item' = '[""]';

此处 ->> 运算符允许获取 JSON 对象字段作为文本。

另一种解决方案

SELECT * from demo 
WHERE json_array_length(demojson->'sub'->'item') = 1 AND 
      demojson->'sub'->'item'->>0 = '';

此处 ->> 运算符允许获取 JSON 第一个数组元素作为文本。

关于sql - Postgres WHERE 数组包含空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41703604/

相关文章:

sql - 了解 SQL 中索引的基础知识

arrays - Google 应用程序脚本 - 获取数组中每个元素的 A1 单元格符号

数字系统代码中的Java数字格式异常错误

c++ - C++ 代码 : setting one variable to zero causes unrelated variable to become zero 中的错误

java - 改造:使用 Jackson 反序列化失败,没有任何错误

javascript - 如何在 javascript 中创建自定义对象?

javascript - 如何获得 d3.js 树布局以按字母顺序对节点进行排序?

php - MySQL 内连接/左连接

java - 显示我的数据库中的名称时遇到问题

sql - Mysql "order of operations"问题