首页 > 解决方案 > MySQL 'IN' 操作符在输入 JSON 值时的行为

问题描述

这个说法

select 'foo' in ('foo', 'bar');

按预期返回 1。

这个

select json_extract('["foo"]', '$[0]') = 'foo';

也按预期返回 1。

然而,这

 select json_extract('["foo"]', '$[0]') in ('foo', 'bar');

意外返回 0。更奇怪的是,如果用附加引号编写

select json_extract('["foo"]', '$[0]') in ('"foo"', '"bar"');

它改为返回 1。但这不适用于简单的相等,因为

select json_extract('["foo"]', '$[0]') = '"foo"';

返回 0。

所以问题是:为什么“IN”和“=”只有在输入 JSON 结果时才会表现不同?

标签: mysqljsonin-operator

解决方案



推荐阅读