首页 > 数据库 > mysql教程 > 如何有效地对 MySQL 中的逗号分隔列表进行反规范化以实现搜索引擎集成?

如何有效地对 MySQL 中的逗号分隔列表进行反规范化以实现搜索引擎集成?

Barbara Streisand
发布: 2025-01-06 11:52:40
原创
821 人浏览过

How Can I Efficiently Denormalize Comma-Separated Lists in MySQL for Search Engine Integration?

解开 MySQL 中的逗号分隔列表以实现无缝集成

问题:

在非标准化表中,列包含充当单独表的外键的逗号分隔列表。当将数据集成到缺乏过程语言支持的搜索引擎时,这就带来了挑战。目标是将这个列表分成多行,最终产生一个非规范化的表。

解决方案:

虽然 MySQL 不提供本质上返回表的函数,但是一个聪明的方法解决方案可以实施:

  1. 准备数据:首先,识别非标准化表 (part_id) 的主键和逗号分隔列 (material)。
  2. 提取逗号分隔值: 利用查询从逗号中提取单个值分开的列表。例如:
SELECT part_id, REGEXP_SUBSTR(`material`, '[^,]+', 1) AS `material_id`
FROM unnormalized_table
登录后复制

此查询将逗号分隔列表中的第一个值分配给material_id列,为每个part_id创建一个新行。

  1. 重复该过程:重复上述查询以从逗号分隔列表中提取后续值。使用模式定义列表中值的位置,例如正则表达式中的 2(第二个值)或 3(第三个值)。
  2. 合并结果: 使用 UNION ALL 将所有单独查询的结果合并到一个表中。这会将多行合并为所需的非规范化格式。

示例:

将此解决方案应用于问题陈述中提供的示例将产生以下结果结果:

part_id material_id
339 1
339 2
970 2

结论:

通过利用字符串操作和子查询的组合,可以对 MySQL 中的逗号分隔列表进行非规范化。该技术可以将此类数据无缝集成到不支持高级过程语言功能的各种应用程序中。

以上是如何有效地对 MySQL 中的逗号分隔列表进行反规范化以实现搜索引擎集成?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板