MySQL JSON数组用于;在;条款
我是否可以使用JSON数组作为MySQL的子句中的MySQL JSON数组用于;在;条款,mysql,json,mysql-5.7,mysql-json,Mysql,Json,Mysql 5.7,Mysql Json,我是否可以使用JSON数组作为MySQL的子句中的的参数(支持JSON的版本为5.7及更高版本) 下面是我无法完全工作的代码 DROP TABLE IF EXISTS json_table; CREATE TEMPORARY TABLE json_table( id INT, data JSON ); INSERT INTO json_table (id, data) VALUES (1, "[1,2,3,4,19,20
的参数(支持JSON的版本为5.7及更高版本)
下面是我无法完全工作的代码
DROP TABLE IF EXISTS json_table;
CREATE TEMPORARY TABLE json_table(
id INT,
data JSON
);
INSERT INTO json_table (id, data) VALUES (1, "[1,2,3,4,19,20]");
SELECT jt.id, jt.data, REPLACE(REPLACE(jt.data, '[', ''), ']', ''), jt.data->"$[4]"
FROM json_table jt;
SELECT stuff.name
FROM table_stuff stuff
#JOIN json_table jt ON stuff.id IN (1,2,3,4,19,20);
JOIN json_table jt ON stuff.id IN (REPLACE(REPLACE(jt.data, '[', ''), ']', ''));
DROP TABLE IF EXISTS json_table;
我希望JSON函数能够正常工作,而不是在
中使用。比如:
SELECT stuff.name
FROM table_stuff stuff JOIN
json_table jt
ON JSON_CONTAINS(jt.data, CONVERT(stuff.id, char)) = 1;
你不能。这需要动态生成(字符串)并执行查询。就像您编写的一样,它只是一个TEXT
值。请改用。@KamilG。感谢KamilGordon,json_contains(…)=1
会不会更整洁,并遵循0/1/null返回值的逻辑以避免混淆?@KamilG。对当我第一次编写它时,我正在考虑find_in_set()
,但是json_contains()
只返回0和1(可能是NULL
)。@aero。我很惊讶它不会自动进行转换。@GordonLinoff。。。是的,我很想看到它也需要这个。这可能会给查询增加一些开销,但对于我的特殊需要,我认为这将是最小的。