首页 > 解决方案 > 如何对 JSON 使用比较 where 运算符

问题描述

使用 json 列查询时出现此错误:

(psycopg2.ProgrammingError) operator does not exist: json = text

该列使用 SQLAlchemy 定义为 JSON:

json_data = db.Column(db.JSON, nullable=False)

你与 Postgres 相比如何?

标签: postgresqlflask-sqlalchemy

解决方案


数据类型没有等式(或不等式)运算符json。如果您需要整体测试该值,则可以转换为jsonb

... WHERE json_data::jsonb = jsonb '{}';

或者在简单的情况下转换为文本:

... WHERE json_data::text = '{}';

但是对于相同的值有许多有效的文本表示json- 这就是 Postgres 没有为该类型实现相等/不等运算符的原因。

看:


推荐阅读