首页 > 解决方案 > 什么是 postgres 替换 lower() 之类的 %

问题描述

我有一个工作 SQL 语句,它查询存储在数据库列“数据”中的 json 数据

SELECT COUNT(*) as count 
FROM dispenseorders.dispenseorder 
where lower(data) LIKE '%"state":"new"%'

但同样的语句在 postgres 数据库中遇到错误。

上面的替换应该是什么?

标签: sqljsonpostgresql

解决方案


您可以尝试转换为文本 ( lower(data::text)),但更好的解决方案是使用->>运算符(如果state不是嵌套键):

SELECT COUNT(*) as count 
  FROM dispenseorders.dispenseorder
 WHERE lower(data ->> 'state') = 'new';

披露:我为EnterpriseDB (EDB)工作


推荐阅读