`

【SQL常用问题】——分拆列值

 
阅读更多
--分拆列值
--原著:邹建
--改编:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)  2007-12-16  广东深圳

/*
有表tb, 如下:
id          value
----------- -----------
1          aa,bb
2          aaa,bbb,ccc
*/
--欲按id,分拆value列, 分拆后结果如下:
/*
id          value
----------- --------
1          aa
1          bb
2          aaa
2          bbb
2          ccc
*/
--1. 旧的解决方法(sql server 2000)
select top 8000 id = identity(int, 1, 1) into # from syscolumns a, syscolumns b

select A.id, substring(A.[values], B.id, charindex(',', A.[values] + ',', B.id) - B.id)
from tb A, # B
where substring(',' + A.[values], B.id, 1) = ','

drop table #

--2. 新的解决方法(sql server 2005)

create table tb(id int,value varchar(30))
insert into tb values(1,'aa,bb')
insert into tb values(2,'aaa,bbb,ccc')
go
select A.id, B.value
from(
    select id, [value] = convert(xml,' <root> <v>' + replace([value], ',', ' </v> <v>') + ' </v> </root>') from tb
)A
outer apply(
    select value = N.v.value('.', 'varchar(100)') from A.[value].nodes('/root/v') N(v)
)B

drop table tb

/*
id          value
----------- ------------------------------
1          aa
1          bb
2          aaa
2          bbb
2          ccc

(5 行受影响)
*/
分享到:
评论

相关推荐

    通过SQL语句实现行列转换的几种方法

    5. **字符串转换成多列**:将包含多个值的字符串拆分为多列,便于进一步处理。 6. **字符串转换成多行**:与上述类似,将字符串中的多个值拆分成多行记录。 本文主要关注第四种情况:**多行转换成字符串**。为了更...

    PHP程序设计-3期(KC016) 5.2.2删除数据常见问题.docx

    然而,在实际操作中,我们可能会遇到一些常见问题,这里我们将详细探讨其中的一个典型问题——PDO(PHP Data Objects)在删除多条数据时的限制及其解决方案。 首先,我们需要理解PDO在SQL查询中的预处理语句,这是...

    vs2008+sql2005图书馆管理系统(三层架构)

    《基于VS2008和SQL2005的图书馆管理系统——详解三层架构设计与实现》 在IT行业中,开发高效、稳定且易于维护的软件系统是至关重要的。本项目"vs2008+sql2005图书馆管理系统"正是这样一种实践,它运用了三层架构的...

    安全,高新能的PHP mysql-mysqli数据库驱动类,支持主从,分库分表,sql注入防御等,Hi-mydb.zip

    预处理语句能确保SQL语句结构不会被用户输入篡改,参数绑定则将用户输入的数据与SQL语句结构分离,避免了直接拼接字符串导致的安全问题。 五、使用示例 使用Hi-mydb,开发者首先需要创建一个实例,配置数据库连接...

    MADlib-基于SQL的数据挖掘解决方案-数据转换之矩阵分解.docx

    《MADlib:基于SQL的数据挖掘解决方案——矩阵分解详解》 MADlib是一个开源的、用于数据库和数据仓库的机器学习库,它提供了一系列高级数据分析功能,包括统计建模、回归分析、分类、聚类以及矩阵分解等。本文将...

    分库分表解决方案-ShardingSphere-JDBC

    为了解决这个问题,分库分表成为了一个常用的技术策略。ShardingSphere-JDBC作为一款优秀的开源中间件,提供了强大的分库分表解决方案,旨在帮助开发者轻松应对大数据场景下的挑战。 ### 1. ShardingSphere-JDBC...

    java面试——上海-拼多多-Java高级.zip

    这份压缩包文件"java面试——上海-拼多多-Java高级.zip"包含了针对Java高级开发人员的面试问题和解答,帮助应聘者准备面试。以下是根据标题、描述和标签提炼出的一些核心Java知识点,这些内容通常会在拼多多的面试中...

    ASP网站CMS程序源码——LoveCMS v1.6.2 汉化版实例开发.zip

    10. **安全措施**:学习CMS系统如何防止SQL注入、XSS攻击等常见的网络安全威胁,以及如何设置安全的用户认证和授权机制。 通过对LoveCMS v1.6.2汉化版的学习,你不仅可以掌握ASP编程技巧,还能深入理解CMS系统的...

    java面试——广州-唯品会-Java大数据开发工程师.zip

    - **排序与搜索**:快速排序、归并排序、二分查找等常见算法的实现与性能分析。 - **图论与树结构**:深度优先搜索、广度优先搜索,最小生成树,最短路径问题,以及二叉树遍历等。 - **动态规划**:理解和应用...

    php网络开发完全手册

    13.5 常见的数据库设计问题 208 13.6 关系型数据库的设计原则 209 13.6.1 第一范式(1NF) 209 13.6.2 第二范式(2NF) 209 13.6.3 第三范式(3NF) 210 13.7 数据库设计的方法与步骤 210 13.7.1 需求分析 211 ...

    Mycat从入门到精通之分片规则、场景、策略.zip

    《Mycat从入门到精通之分片规则、场景、策略》是一份全面介绍Mycat数据库中间件的教程资源,包含PPT讲义和相关的练习题,旨在帮助学习者深入理解和掌握Mycat的核心功能——数据分片。在大数据时代,面对海量的数据...

    mysql 分库分表查询工具-shard.zip

    MySQL 分库分表查询工具——Shard 在大型的互联网应用中,数据库的性能瓶颈往往成为系统扩展性的关键因素。为了应对高并发、大数据量的挑战,MySQL 数据库的分库分表策略被广泛采用。分库是将数据分散到多个独立的...

    oracle基础知识

    按列值的哈希值进行分区: ```sql CREATE TABLE table_name (column_name NUMBER) PARTITION BY HASH (column_name) PARTITIONS 4; ``` ##### 14.5 复合范围散列分区 结合范围分区和散列分区: ```sql CREATE ...

    成绩管理系统(C/S结构的应用系统,含access数据库)——C#实现

    成绩管理系统是一种常见的软件应用,主要用于学校或教育机构中管理学生的学习成绩、课程信息以及教师评估。本系统采用经典的客户端/服务器(C/S)架构,并利用C#编程语言进行开发,结合Access数据库存储和处理数据。...

    基于Mycat中间件分布式数据库架构及企业实践

    1. 哈希分片:根据数据的某个字段哈希值进行分片,确保同一数据始终落在同一节点,适合读写均衡场景。 2. 范围分片:根据数据的某个字段的范围进行分片,如按时间戳分片,适合历史数据归档。 3. 混合分片:结合哈希...

    对分库分表的一些想法

    "对分库分表的一些想法"这一主题,正是针对这种挑战提出的一种解决方案——数据库分片技术。下面将详细讨论分库分表的概念、应用场景、实现方式以及相关工具。 分库分表,顾名思义,是指将一个大型的数据库拆分为多...

    网易技术部MySQL中文资料

    - 讨论了SQL模式设置对跨数据库平台的兼容性问题。 - **8.3 SQLMode与数据效验** - 分析了SQL模式如何影响数据的有效性和一致性检查。 **第9章 常用SQL技巧** - **9.1 检索包含最大/最小值的行** - 提供了一些...

    mycat-读写分离-离线安装包

    《Mycat——实现MySQL读写分离的利器》 在当今大数据时代,数据库的处理能力是系统性能的关键因素之一。MySQL作为广泛使用的开源关系型数据库,其读写操作的负载均衡问题日益突出。为了解决这个问题,Mycat应运而生...

    php+mysql不用递归实现的无限级分类实例(非递归)

    在IT领域,尤其是在数据库设计和Web开发中,无限级分类是一个常见的需求,特别是在内容管理系统、电商网站等场景中。然而,传统的递归方法虽然直观,但可能会消耗大量资源,特别是当分类层级深时。因此,本篇文章将...

Global site tag (gtag.js) - Google Analytics