如何在JSON中使用比较where运算符

时间:2018-07-09 14:45:08

标签: postgresql flask-sqlalchemy

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

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

该列通过SQLAlchemy定义为JSON:

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

您与Postgres相比如何?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

请参阅: