MySQL 将 Json 数组展平为值字符串

标签 mysql json sphinx

我在 mysql 中有一个 JSON 字段,用于像这样的标签

[
    {"id": 138001, "tag": "Travel"}, 
    {"id": 138002, "tag": "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 规则,[", 将被“忽略”(更多技术上被视为分隔符并折叠起来)

<小时/>

也不熟悉它,但也许 JSON_UNQUOTE 可以工作?不知道是否可以折叠数组。

关于MySQL 将 Json 数组展平为值字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53535155/

相关文章:

php - 使用下拉列表进行 Sphinx 过滤

json - ReactJS:如何解决映射多个对象数组

python mysql连接

mysql - 学生连续缺课5天(节假日除外)

mySQL开关: How to give "OR" priority or importance in a SELECT statement to get a default row

android - GridView 中的延迟加载

json - JWS 和 JWE token 的嵌套有任何标准顺序吗?

php - 如何编写查询来匹配所有表?

mysql - 使用 MySQL 事务时,Sphinx 索引器不获取数据

MYSQL查询-多次点赞