用于“IN”子句的MySQL JSON数组?

时间:2016-09-10 15:37:44

标签: mysql json mysql-5.7 mysql-json

我可以使用JSON数组作为MySQL IN子句的参数(版本5.7及更高版本,支持JSON)吗?

以下是我无法完全工作的代码......

    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;

1 个答案:

答案 0 :(得分:2)

我希望JSON函数能够工作,而不是IN。类似的东西:

SELECT stuff.name
FROM table_stuff stuff JOIN
     json_table jt
     ON JSON_CONTAINS(jt.data, CONVERT(stuff.id, char)) = 1;