当前位置: 首页 > 面试题库 >

MySQL:选择逗号分隔列表的第一个元素

宗政元青
2023-03-14
问题内容

不幸的是,我有一个字段列,其中包含诸如

  • 4
  • 12,3
  • 8,5,6,7

我将编写一个SELECT语句,其结果将是:

  • 4
  • 12
  • 8

由于MySQL不提供“拆分”功能,我如何在实践中做到这一点?


问题答案:

使用MySQL的SUBSTRING_INDEX功能:

SELECT SUBSTRING_INDEX(field, ',', 1)

但是,将列表保留在以定界符分隔的字符串中通常是对像MySQL这样的关系数据库管理系统的低效使用:通常最好通过将这样的列表保留在成对的单独表中来规范化数据结构(id, value)



 类似资料:
  • 问题内容: 我目前有一些带回标签的sql。它们应该具有不同的ID,但没有。…所以我当前的数据如下: 我想做的是只返回一行,最后一列连接到分隔列表中,例如: 我为此使用mySQL 5。 问题答案: 使用此,具有覆盖其他三列:

  • 问题内容: 我需要运行类似的查询: 但是我希望子选择返回逗号分隔的列表,而不是数据列。这有可能吗?如果可以,怎么办? 问题答案: 您可以使用GROUP_CONCAT执行该操作,例如

  • 问题内容: 我有以下表格: 过滤器 使用者 我想运行以下选择 我想收到 但是我什么也没收到。 问题在于该字段是文本,因此“ in select”返回的内容类似于“ 1、2、3”(带有分号),因此 in 找不到任何值。 是否可以进行强制转换或将字符串更改为数组的选项? 问题答案: 最好规范化您的架构,不要以逗号分隔列表的形式存储关系,而是为此创建一个联结表,以维护用户和过滤器之间的 m:m 多对多关

  • 问题内容: 我有一个未标准化的表,其中的列包含逗号分隔的列表,该列表是另一个表的外键: 我想将此数据读入不提供过程语言的搜索引擎中。 那么,有没有一种方法, 要么 就这一栏中加入 或 该数据运行查询插入相应的条目到一个新的表?结果数据应如下所示: 如果DBMS支持返回表的函数,但MySQL显然不支持,我可以想到一个解决方案。 问题答案: 在MySQL中,可以通过以下方式实现 现在要获取逗号分隔的v

  • 问题内容: 我需要这个问题的帮助。 在MYSQL表中,我有一个字段: 我需要找到艺术家uid 401的所有记录 我做这个 我所有记录的artist_list字段值仅是“ 401”,但是如果我有11,401,则此查询不匹配。 任何的想法 ? (我无法使用LIKE方法,因为如果艺术家uid为3(匹配30、33、3333)… 问题答案: 短期解决方案 使用FIND_IN_SET函数: 长期解决方案 标准

  • 问题内容: 我需要以以下方式执行选择查询: 实现该目标的正确方法是什么? 考虑到我可以控制发送字符串的客户端代码,有没有更好的方法?(该字符串将包含大约30个id,因此我试图避免发送30个参数,每个id一个)。 谢谢你们 问题答案: 您可以使用MySQL 函数: 附录 :请注意,上面的查询 无法 优化,因此,如果您在MySQL 上有索引,则不会使用它。您必须决定使用相对简单是否值得潜在的性能损失(