当前位置: 首页 > 知识库问答 >
问题:

mysql - Mysql一个字段的值是“1,2,3,4,5,6”,怎么分别取出用逗号分割的这些值?

吕灿
2023-06-19

比如我要分别取出1,2,3。
要怎么写?

共有2个答案

宁浩博
2023-06-19

您可以使用MySQL内置函数SUBSTRING_INDEX()来实现这个目标。

具体步骤如下:

使用SUBSTRING_INDEX()函数将逗号分割的值转换为多行。

SELECT SUBSTRING_INDEX('1,2,3,4,5,6', ',', 1) AS val
UNION ALL SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5,6', ',', 2), ',', -1)
UNION ALL SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5,6', ',', 3), ',', -1)
-- add more UNION ALL SELECT statements for additional values as needed

这将返回:

+------+
| val  |
+------+
| 1    |
| 2    |
| 3    |
+------+

以上内容来自 ChatGPT,有修改

实际测试:

mysql> SELECT SUBSTRING_INDEX('1,2,3,4,5,6', ',', 1) AS val
    -> UNION ALL SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5,6', ',', 2), ',', -1)
    -> UNION ALL SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5,6', ',', 3), ',', -1)
    -> -- add more UNION ALL SELECT statements for additional values as needed
    -> ;
+------+
| val  |
+------+
| 1    |
| 2    |
| 3    |
+------+
3 rows in set (0.00 sec)

mysql> 
南门宇
2023-06-19

SQL

SELECT *
FROM JSON_TABLE(
       CONCAT('[', '1, 2, 3, 4, 5, 6', ']'),
       '$[*]' COLUMNS(num INT PATH '$')
     ) AS jt
WHERE num <= 3;

结果

num
1
2
3
 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: mysql是多列数组 我有两个表: 帖子表 Gallery中的值是Images表中的主键: 图片表 我之所以这样做,而不仅仅是在Images表中添加PostID键,是因为这些图像可以与许多不同的帖子相关联。我想我可以为关系添加另一个表,但是就我要添加到其中的jQuery脚本而言,逗号分隔的值更易于使用。 如果我在需要与PostI

  • 问题内容: 我有2张桌子和。表包含客户的电子邮件。 我正在使用PHP-IMAP从电子邮件服务器获取电子邮件,然后将其保存到数据库表。 该表有2个字段,并且字段包含逗号分隔的值。 我需要获取从第一台邮件,然后搜索对与上。 首先,我考虑了要搜索的条件,但我想拥有类似的东西或其他东西。 我怎样才能更好地做到这一点?(由于某些原因,我无法在此表上使用关系) 请指教。 问题答案: 基于FIND_IN_SET

  • 问题内容: 我有2张桌子如下 笔记表 职位表 我想查询我的Notes表并将’forDepts’列与Positions表中的值相关联。 输出应为: 我知道数据库应该规范化,但是我不能更改此项目的数据库结构。 这将用于使用以下代码导出excel文件。 此代码仅输出“ forDepts”的第一个值 考试:执行人员(而不是执行人员,公司行政人员,Art) 可以通过CONCAT或FIND_IN_SET完成吗

  • 问题内容: 我的一个表中有一列,其中存储多个用逗号分隔的ID。有没有一种方法可以在查询的“ IN”子句中使用此列的值。 column()的值类似于 我需要用作 我对Crozin的回​​答感到满意,但我愿意接受建议,观点和选择。 随时分享您的观点。 问题答案: 以@Jeremy Smith的FIND_IN_SET()示例为基础,您可以使用联接来完成此操作,因此不必运行子查询。 这是众所周知的非常表现

  • 问题内容: 我想在MySQL中将选定的值转换为逗号分隔的字符串。我的初始代码如下: 哪个产生了: 我想要的输出看起来像这样: 问题答案: 检查一下

  • 问题内容: 我不确定使用纯SQL(MySQL)是否可以实现,但是无论如何我都会问。我有一个这样的表: 我想从标签字段中选择一个所有唯一的单词,以获得类似这样的内容: 问题答案: 您可以在SQL中执行此操作,尽管它不是很漂亮。 您需要确保子查询的每个标签中至少包含单词数。 这是演示此的SQLFiddle。 这是将原始数据与序列号交叉连接。然后,使用从标签字符串中选择第n个值。 要获得最大数量的标签,