我有下表:

CREATE TABLE mytable (
    id     int, 
    name   varchar(255), 
    data   json
);
id name data
1 John ["a", "b"]
2 Pete ["a", "b", "c"]
3 Mike ["a", "b"]

其中,列data的类型为JSON,我希望 Select 字段data等于字符串["a", "b"]的行.

我目前使用的是一种天真的方法:

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

然而,它总是返回空集.比较JSON字段和字符串的正确方式是什么?

推荐答案

您可以使用CAST(... AS JSON)将JSON-as-字符串转换为JSON数据类型以进行比较:

SELECT *
FROM t
WHERE data = CAST('[
  "a",
  "b"
]' AS JSON)

Mysql相关问答推荐

可以在MySQL表名中使用表情包吗?

根据计数按月和年对数据进行分组()

错误:数据包顺序错误.GET:0预期:10 node JS MySQL

MySQL工作台的编码问题

MySQL 搜索列字段字符串

如何在 MySQL 中对同一个表的多个列进行 INNER JOIN

SQL查询连接到多个类别的项目

我可以在姓名和姓名日期之间进行搜索吗?

MySQL中的where语句会 destruct 全外连接.

如何将多个字符串插入变量

替代对多个表执行 FULL OUTER JOIN?

MySQL 在第一个匹配行后停止搜索 N 行(不是 LIMIT)

在表中找到最大值,然后分别显示SQL组和每个SQL组中的最大值计数

使用 SET 变量进行 MySQL 查询

提取 MySQL 5.7 连续值的差异

如何从将分钟、天、月和年存储在不同列中的表中查询数据

MySQLi count(*) 总是返回 1

在 PHP 中获取 MySQL 列的总和

如何在mysql中连接整数(整数和整数)和varchar(nvarchar和varchar)等数据类型?

int(11) 和 int(11) UNSIGNED 有什么区别?