MySQL 将 Json 数组展平为值字符串
MySQL flatten Json array to string of values
我在 mysql 中有一个 JSON 字段用于像这样的标签
[
{"id": 138001, "tag": "Travel"},
{"id": 138002, "tag": "Holidays"}
]
我想将其检索为 'Travel Holidays'
我可以得到 json 数组格式的值:
["Travel", "Holidays"]
与当前语句,
SELECT JSON_EXTRACT(post_tags, '$[*].tag') AS tags FROM posts WHERE post_id = 646745;
但我不确定是否有办法将数组展平为由空格分隔的单个字符串,是否可行?
我这样做的原因是,sphinx 搜索也会为标签字段编制索引,您可以在索引中获取根本不需要的 id 值
好吧,你可以直接让 sphinx 索引 ["Travel", "Holidays"]
。
根据 charset_table
规则,[
、"
和 ,
将只是 'ignored'(从技术上讲,它们被视为分隔符并折叠起来)
也不太熟悉,但也许JSON_UNQUOTE
可以用?不知道它是否可以折叠数组。
我在 mysql 中有一个 JSON 字段用于像这样的标签
[
{"id": 138001, "tag": "Travel"},
{"id": 138002, "tag": "Holidays"}
]
我想将其检索为 'Travel Holidays'
我可以得到 json 数组格式的值:
["Travel", "Holidays"]
与当前语句,
SELECT JSON_EXTRACT(post_tags, '$[*].tag') AS tags FROM posts WHERE post_id = 646745;
但我不确定是否有办法将数组展平为由空格分隔的单个字符串,是否可行?
我这样做的原因是,sphinx 搜索也会为标签字段编制索引,您可以在索引中获取根本不需要的 id 值
好吧,你可以直接让 sphinx 索引 ["Travel", "Holidays"]
。
根据 charset_table
规则,[
、"
和 ,
将只是 'ignored'(从技术上讲,它们被视为分隔符并折叠起来)
也不太熟悉,但也许JSON_UNQUOTE
可以用?不知道它是否可以折叠数组。