You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON类型列与特定字符串值进行正确比较?

正确比较JSON字段与字符串的方法

问题根源

直接用JSON类型字段和字符串字面量做等值比较时,数据库会将两者判定为不同数据类型,导致匹配逻辑失效,所以返回空集。必须保证比较的两边类型一致,或者使用数据库提供的JSON专用比较工具。

分数据库解决方案

PostgreSQL

将字符串字面量转换为json类型后再进行比较:

SELECT * FROM mytable WHERE data = '["a", "b"]'::json;

如果你的字段是jsonb类型(推荐使用,性能更优),则转换为jsonb类型:

SELECT * FROM mytable WHERE data = '["a", "b"]'::jsonb;

注意:json类型严格匹配字面格式(包括空格、元素顺序),jsonb会忽略无意义空格,但数组元素顺序仍会影响匹配结果。

MySQL

  • 若使用MySQL 8.0.17及以上版本,直接使用JSON_EQUAL函数:
SELECT * FROM mytable WHERE JSON_EQUAL(data, '["a", "b"]');
  • 低版本可将JSON字段转为字符串后比较(需确保两边格式完全一致,比如空格、引号位置):
SELECT * FROM mytable WHERE CAST(data AS CHAR) = '["a", "b"]';

内容的提问来源于stack exchange,提问作者Vaks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:43:16