gpt4 book ai didi

mysql - 处理MySQL表中分号分隔的数据

转载 作者:行者123 更新时间:2023-11-29 19:18:21 26 4
gpt4 key购买 nike

我的 MySQL 数据库在一列中包含多个数据,并用分号分隔。我需要使用其中的第一个。处理此类存储数据的最佳推荐方法是什么? (对于这个特定问题以及通常如何使用分号分隔数据)。

最佳答案

问:“处理此类存储数据的最佳推荐方法是什么?”

答:最好建议是避免将数据存储为逗号分隔列表。 (不,这并不意味着我们应该使用分号代替逗号作为列表中的分隔符。)

对于该主题的介绍性讨论,我建议您回顾一下 Bill Karwin 的书中的第 2 章:“SQL AntiPatterns:避免数据库编程的陷阱”

可以在这里方便地获取

https://www.amazon.com/SQL-Antipatterns-Programming-Pragmatic-Programmers/dp/1934356557

以及其他优秀书商的作品。暂时搁置该建议......

<小时/>

要从分号分隔列表中检索第一个元素,我们可以使用 SUBSTRING_INDEX 函数。

作为演示:

SELECT SUBSTRING_INDEX('abc;def;ghi',';',1)

返回

'abc'

MySQL SUBSTRING_INDEX 函数记录如下:https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index

<小时/>

我认识到这可能被视为“仅链接答案”。这个问题的一个好的答案将会更长,并给出示例来演示存储逗号分隔列表的陷阱。

如果数据库仅将逗号分隔的列表视为整个数据 block ,而不需要检查列表的内容,那么我会考虑存储它,类似于我们存储数据库中的 .jpg 图像。

我会将 .jpg 图像作为 BLOB(完整的字节 block )进行存储和检索。保存整个事物,并检索整个事物。我永远不会让数据库操纵图像的内容。我不会要求数据库检查图像来辨别 jpg 图像“中”的信息。我不会要求数据库从中导出任何有意义的信息...照片中有多少人,照片中的人的名字是什么,在照片中添加一个人,等等。

如果我们打算将其作为一个对象,一个不透明的字节 block ,就像我们处理 jpg 图像一样,我只会容忍存储逗号分隔(或分号分隔)分隔的列表。

关于mysql - 处理MySQL表中分号分隔的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com