如何在MySQL中提取首个大括号对之间的目标文本内容
MySQL多语言文本提取方案
完全可以通过MySQL原生字符串函数实现需求,核心逻辑是通过两次字符串截断定位目标文本的起止位置:
- 先截断首个
}右侧的内容,去掉第一个语言标签头部 - 再截断第一个
{language}左侧的内容,就能得到首个语言对应的文本
提取查询语句
假设存储多语言内容的字段为multi_lang_content,所属表为goods,查询语句如下:
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(multi_lang_content, '}', -1), '{language}', 1 ) AS first_lang_content FROM goods;
批量写入新字段操作
如果需要把提取结果持久化到新字段,可按以下步骤执行:
-- 新增存储首段文本的字段,字段长度可根据实际业务调整 ALTER TABLE goods ADD COLUMN first_lang_title VARCHAR(255) COMMENT '首段语言商品标题'; -- 批量更新赋值 UPDATE goods SET first_lang_title = SUBSTRING_INDEX(SUBSTRING_INDEX(multi_lang_content, '}', -1), '{language}', 1);
效果验证
对应你给出的示例数据{language en}text in english{language}{language de}text in german{language}:
- 第一次截断后得到:
text in english{language}{language de}text in german{language} - 第二次截断后得到:
text in english,完全符合预期输出。
提示:该方案兼容MySQL 5.5及以上所有版本,无需额外插件,只要你的多语言内容严格遵循给定的格式规则即可正常运行。如果字段内容不符合格式要求,查询会返回空字符串,可根据业务需要额外加条件过滤异常数据。
内容的提问来源于stack exchange,提问作者Hamer247
相关产品推荐
相关产品推荐

