MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)

这篇具有很好参考价值的文章主要介绍了MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.创建表的示例

 CREATE TABLE tbl_name(
     id       int(11)    not null auto_increment,
     userName varchar(100)    not null,
 PRIMARY KEY(id)
 )
 ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
 
 insert into tbl_name values (1,'a,aa,aaa');
 insert into tbl_name values (2,'b,bb');
 insert into tbl_name values (3,'c,cc')

数据如下图:
MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)
SELECT a.id,SUBSTRING_INDEX(SUBSTRING_INDEX(a.userName,‘,’,b.help_topic_id+1),‘,’,-1) as name
from tbl_name a left join mysql.help_topic b
on b.help_topic_id < (LENGTH(a.userName)-LENGTH(REPLACE(a.userName,‘,’,‘’))+1)
ORDER BY a.id;
MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)

本人需求为 图层树的父级节点都在 ancestors 字段中,需要获取多个图层中信息的不重复的父级节点即可使用

DROP TABLE IF EXISTS `map_two_layer`;
CREATE TABLE `map_two_layer`  (
  `layer_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '图层ID',
  `node_types` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '节点类型(0目录1服务)',
  `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父级ID',
  `ancestors` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '祖级列表'
  PRIMARY KEY (`layer_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1732 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '图层注册' ROW_FORMAT = DYNAMIC;

SET FOREIGN_KEY_CHECKS = 1;

主要表结构如下:

MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)

	SELECT DISTINCT (SUBSTRING_INDEX(SUBSTRING_INDEX(a.ancestors,',',b.help_topic_id+1),',',-1) ) as name
 from map_two_layer a left join mysql.help_topic b
 on b.help_topic_id < (LENGTH(a.ancestors)-LENGTH(REPLACE(a.ancestors,',',''))+1)  ORDER BY a.layer_id ;

查询后对主键ID去重即可获取到需要的相关信息
MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)文章来源地址https://www.toymoban.com/news/detail-505482.html

到了这里,关于MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL 查询表中某列字段相同的重复数据的方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在数据库查询中,我们经常需要查找表中某列中重复的数据。本文将介绍如何使用 SQL 查询语句来查找表中某列字

    2024年02月15日
    浏览(51)
  • mysql把以逗号连接的字段拆分成列表

    需求: 由目标表testtt 得到分隔后的数据 步骤一: 创建中间表test CREATE TABLE `test` (   `id` int(11) NOT NULL,   `name` varchar(255) DEFAULT NULL,   PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC 添加数据 insert into `test` (`id`, `name`) values(\\\'0\\\',NULL); insert into `test

    2024年01月23日
    浏览(57)
  • mysql一行逗号分割的数据分解为多行

    在 MySQL 中,你可以使用函数 REPLACE 和 SUBSTRING_INDEX 来将一行逗号分隔的数据分解为多行。 例如,假设你有一个表,其中包含一列 items ,该列包含逗号分隔的字符串,如下所示: 你可以使用以下查询来将该表中的每一行数据分解为多行: 该查询会返回如下所示的结果: 你也

    2024年02月15日
    浏览(41)
  • Mysql 行转列,把逗号分隔的字段拆分成多行

    源数据 变更后的数据 第一种 先执行下面的SQL,看不看能不能执行,如果有结果,代表数据库版本是可以的,可以看下面和自己表关联的SQL,如果不行用第二种。 示例SQL 和业务结合在一起使用 其核心在于 mysql.help_topic ,但是版本太低的数据库版本不支持,如果不支持,可以

    2024年02月02日
    浏览(42)
  • [开发|java] 将一个Java字符串按逗号分割成一个列表(List)

    可以使用Java的 split() 方法将字符串分割成字符串数组,然后将数组转换为列表。以下是一个示例代码: 输出 在上述代码中,我们使用 split(\\\",\\\") 方法将字符串 str 按逗号分割成一个字符串数组,然后使用 Arrays.asList() 方法将数组转换为列表。最后,我们打印输出列表的内容。

    2024年02月16日
    浏览(58)
  • Mysql 查询以逗号(,)分割的字符串,精确查找和模糊查询

    1、测试数据库表结构 2、测试数据 数据库有一个字段ancestors存储着部门父级id,每,用逗号分隔符隔开。比如:ancestors:“0,1,2,3,4,5,6,7,8,11,12,9,10,13\\\"”,我需要查询ancestors字段中包含“2”的信息 结果: 结果: 使用 FIND_IN_SET 函数能够准确查出 ancestors字段中含有 2 这项有哪些

    2024年02月11日
    浏览(43)
  • Mysql(函数) 字符串截取、拆分, 逗号分割字符串当做 in 的条件

    目录  引言:  数据库函数的总结(一) 1. mysql截取拆分 2. 逗号分割的字符串 作为in条件 - 2.1 正常的效果应该是  --- 2.1.1 错误:  3. 字符串合并(多条数据合并 用\\\'、\\\'分割) 1. 字符串截取、拆分 可以用于将用户输入的字符串按照特定的规则进行截取,比如获取电话号码中的区号、

    2024年02月08日
    浏览(67)
  • mysql获取第一个逗号前面的字符串

    字符串内容如下: 想获取,第一个逗号前面的字符串,即:统编版(2019) 需要第一获取逗号的下标位置,然后再截取字符串 获取逗号的函数使用:LOCATE 结果如下:  然后使用 left 函数截取字符串,代码如下: 结果如下: 统编版(2019)

    2024年02月13日
    浏览(43)
  • 使用SQL语句将相同名的多行字段内容拼接起来

    以下内容来自CHATGPT,其中PGADMIN经实验,有效 1、在MYSQL中使用: 可以使用GROUP_CONCAT函数来实现相同名称的多行字段内容拼接。具体语法如下: 其中,column_name是相同名称的字段,another_column是需要拼接的字段,SEPARATOR是拼接多个字段内容之间的分隔符。GROUP BY用于将所有相同

    2024年02月09日
    浏览(36)
  • SQL语句截取字段某指定字符的前半段/后半段内容

    最近项目中遇到一个小问题: 需要从数据库中取出对应数据,并根据某个字段中的前半段内容进行排序,搜索资料后得以解决,现将解决方法记录如下: 最初的查询SQL: 结果截图: 截取file_name字段中前半段数据的SQL: 结果截图: 按照截取的file_name字段的前半段数据及sor

    2024年02月02日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包