postgresql - 如何对 JSON 使用比较 where 运算符
问题描述
使用 json 列查询时出现此错误:
(psycopg2.ProgrammingError) operator does not exist: json = text
该列使用 SQLAlchemy 定义为 JSON:
json_data = db.Column(db.JSON, nullable=False)
你与 Postgres 相比如何?
解决方案
数据类型没有等式(或不等式)运算符json
。如果您需要整体测试该值,则可以转换为jsonb
:
... WHERE json_data::jsonb = jsonb '{}';
或者在简单的情况下转换为文本:
... WHERE json_data::text = '{}';
但是对于相同的值有许多有效的文本表示json
- 这就是 Postgres 没有为该类型实现相等/不等运算符的原因。
看:
推荐阅读
- circleci-2.0 - CircleCI构建成功时如何触发云函数
- c# - 在 Azure Pipeline 上运行 NUnit 测试脚本时出现多个错误
- magento - 为特定属性组中的属性添加新的输入文件 - Magento 2.3
- python - opencv扭曲图像中2点的欧几里得距离
- vb.net - 我如何使用 Windows 应用程序 vb.net 存储和连接访问数据库/文件
- excel - 使用日期选择器将数据从 Excel 工作表过滤到用户表单中的列表框
- csv - 当csv文件有cr和lf时如何加载到hive
- .net-core - 无法通过 dotnet build 命令编译模板 C++/CLI (.NET Core 3.1) 项目
- python - 透明度变成橄榄绿
- nginx - SignalR SSL 信任问题与 Android 的反向代理(Nginx)