MySQL JSON数组用于;在;条款

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数组作为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]");

    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。。。是的,我很想看到它也需要这个。这可能会给查询增加一些开销,但对于我的特殊需要,我认为这将是最小的。