问题:
在非标准化表中,列包含充当单独表的外键的逗号分隔列表。当将数据集成到缺乏过程语言支持的搜索引擎时,这就带来了挑战。目标是将这个列表分成多行,最终产生一个非规范化的表。
解决方案:
虽然 MySQL 不提供本质上返回表的函数,但是一个聪明的方法解决方案可以实施:
SELECT part_id, REGEXP_SUBSTR(`material`, '[^,]+', 1) AS `material_id` FROM unnormalized_table
此查询将逗号分隔列表中的第一个值分配给material_id列,为每个part_id创建一个新行。
示例:
将此解决方案应用于问题陈述中提供的示例将产生以下结果结果:
part_id | material_id |
---|---|
339 | 1 |
339 | 2 |
970 | 2 |
结论:
通过利用字符串操作和子查询的组合,可以对 MySQL 中的逗号分隔列表进行非规范化。该技术可以将此类数据无缝集成到不支持高级过程语言功能的各种应用程序中。
以上是如何有效地对 MySQL 中的逗号分隔列表进行反规范化以实现搜索引擎集成?的详细内容。更多信息请关注PHP中文网其他相关文章!