sql - 什么是 postgres 替换 lower() 之类的 %
问题描述
我有一个工作 SQL 语句,它查询存储在数据库列“数据”中的 json 数据
SELECT COUNT(*) as count
FROM dispenseorders.dispenseorder
where lower(data) LIKE '%"state":"new"%'
但同样的语句在 postgres 数据库中遇到错误。
上面的替换应该是什么?
解决方案
您可以尝试转换为文本 ( lower(data::text)
),但更好的解决方案是使用->>
运算符(如果state
不是嵌套键):
SELECT COUNT(*) as count
FROM dispenseorders.dispenseorder
WHERE lower(data ->> 'state') = 'new';
披露:我为EnterpriseDB (EDB)工作
推荐阅读
- javascript - 堆栈跟踪中的评估是邪恶的吗?
- node.js - 为什么在通过 sudo 以 root 身份询问时,尽管安装了 NVM 和最新的 LTS,节点仍报告旧版本?
- azure-synapse - 从 Azure Synapse spark notebook 连接到 SQL-Pool 表
- java - 在 JavaFX Maven 项目的 pom.xml 文件中添加 VM 标志
- java - Hibernate 和 DispatcherServlet 初始化的关系
- python - 在 Qpython (android) 上使用 SSL 时出现错误
- excel - 使用 CreateObject("Excel.Application") 的 2 个 Excel 链接实例
- android - react-native-contacts android null 不是评估 t.givenName[0] 的对象
- java - 如何仅在第一个片段上隐藏浮动操作按钮?
- html - 你好,我想显示图像拇指。在选项标签上,我可以尝试更多方法,但没有运行它