mysql5.7版本,构造json伪列,进行搜索无效,请指点!

有表结构为这样的数据:

id a b c d
1 a1 b1 c1
2 b1 b2 c2 [{"a": "a1", "b": "b1", "c": "c1"}, {"a": "a2", "b": "b2", "c": "c2"}]

其中这个表中abc为varchar,d为json格式。

现在打算把这两行的abc数据变成一个json,故创建函数:


CREATE  FUNCTION get_json_test() RETURNS varchar(20000) CHARSET utf8
BEGIN
    declare out_text blob    default '';
    select
    concat( '[', group_concat( json_object(
        "a",a,
        "b",b,
        "c",c
        ) ) , ']' ) into out_text

    
    
    from table1 ;
    RETURN out_text;
END

然后想通过伪列把所有包含a的数据都搜索出来,缺搜索的空,sql语句如下:
select @t:=get_json_test() from dual where JSON_EXTRACT(@t, '$[*].a') LIKE "%a%";

但是直接搜索d就可以:
select * from table1 where JSON_EXTRACT(d, '$[*].a') LIKE "%a%";;

请大神解释如何对这种结构数据进行模糊搜索呢?

阅读 976
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题