例子如下:
create table test(name varchar(20),num varchar(20))
insert test
select 'aa','5/6/9' union all
select 'bb','6/7/8'
go
--drop table test
select
a.name[col2],col1=substring(a.num,b.number,charindex('/',a.num+'/',b.number)-b.number)
from
test a join master..spt_values b
ON B.type='p' AND B.number BETWEEN 1 AND LEN(A.num)
where
substring('/'+a.num,b.number,1)='/'
order by col1
col2 col1
-------------------- --------------------
aa 5
aa 6
bb 6
bb 7
bb 8
aa 9
(所影响的行数为 6 行)
2005方法:
----------------------------------------------------------------
-- Author :fredrickhu(我是小F,向高手学习)
-- Date :2009-09-08 16:19:47
-- Version:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([name] varchar(2),[num] varchar(20))
insert [tb]
select 'aa','5/6/9' union all
select 'bb','6/7/8'
--------------开始查询--------------------------
SELECT A.name, B.num
FROM(
SELECT name, [num] = CONVERT(xml,' <root> <v>' + REPLACE([num], '/', ' </v> <v>') + ' </v> </root>') FROM tb
)A
OUTER APPLY(
SELECT num = N.v.value('.', 'varchar(100)') FROM A.[num].nodes('/root/v') N(v)
)B
----------------结果----------------------------
/* name num
---- ----------------------------------------------------------------------------------------------------
aa 5
aa 6
aa 9
bb 6
bb 7
bb 8
(6 行受影响)
*/
分享到:
相关推荐
Microsoft SQL Server 提供了多种方法来处理这种情况,尤其是在处理变长的数据或者需要将数据结构进行调整时。本教程将深入探讨如何在 SQL Server 中拆分表行数据。 首先,我们需要理解为什么需要拆分表行数据。...
**mycat 分库分表详解** mycat 是一个开源的分布式数据库中间件,它能够将一个大型数据库逻辑上划分为多个小型数据库,实现数据的分布式存储,以解决单机数据库在高并发、大数据量场景下的性能瓶颈问题。mycat 在 ...
例如,`common-db-route`可能是一个通用的数据库路由模块,它负责根据业务逻辑和分库分表策略,将SQL语句路由到正确的数据库和表上。`db-route-demo`可能是这个路由机制的示例代码,展示了如何在实际项目中实现数据...
例如,我们可以根据业务模块或者用户ID进行分库分表,然后在需要执行SQL的地方,Sharding-JDBC会自动将SQL解析并路由到正确的数据库和表。 通过SSMDemo这个示例项目,我们可以深入了解Sharding-JDBC的使用方法。该...
它支持SQL解析、规则引擎、分布式算法,可与SpringMVC等框架良好集成。 4. **数据路由**:在分库分表中,数据路由是关键。ShardingSphere通过定义分片规则,根据业务逻辑(如用户ID、订单号等)将数据分配到相应的...
3. **SQL路由**:在Python应用中,需要编写代码来确定数据应存储或查询在哪个数据库或表中,这通常通过自定义路由类实现。 4. **数据迁移与同步**:在进行分表分库后,可能需要定期或在特定情况下进行数据迁移和...
1. ShardingSphere:由Apache基金会维护的开源项目,提供分库分表、读写分离、数据加密等功能,支持MySQL、Oracle、SQL Server等多种数据库。 2. MyCAT:一个开源的分布式数据库中间件,支持大表分片、读写分离、...
在数据分析和大数据处理中,将一个大表分成...这个过程不仅可以应用于Excel文件,也可以扩展到其他数据源,如SQL数据库或CSV文件。记住,分表策略应根据具体业务需求和数据规模进行调整,以确保最佳的性能和可维护性。
3. **SQL语句构建**:在分库分表环境中,SQL语句需要进行改造。比如,INSERT、UPDATE和DELETE操作需要考虑到目标库和表的选择,可能需要拼接出多个操作语句。同时,JOIN操作变得复杂,可能需要在应用层进行数据聚合...
在现代企业级应用开发中,数据量的增长往往超出单个数据库的处理能力,这时就需要采用分库分表的技术来提高系统的扩展性和性能。本项目基于Java、SpringBoot、MyBatis以及ShardingJDBC实现了一个分库分表的解决方案...
3. **编写路由逻辑**:在应用程序中,处理SQL路由,确保数据正确地写入和读取到相应的库表。 4. **测试与优化**:对分库分表后的系统进行性能测试,根据测试结果进行优化调整。 本案例提供的源码可以帮助你深入理解...
这些中间件能够屏蔽分库分表的复杂性,提供统一的SQL接口给上层应用使用,同时处理好数据分布、路由、事务、容错等复杂问题。常见的中间件有ShardingSphere、MyCAT等。 在进行分库分表时,开发者和数据库管理员需要...
当数据量达到一定规模,例如超过100万条记录,性能问题就会显现,此时就需要采取相应的优化策略,如分表或分区。本文主要讨论如何使用PHP操作MySQL数据库进行分表。 分表是一种常见的数据库扩展策略,它通过将一个...
jdbc-sharding通过在JDBC层进行拦截,动态地修改SQL语句,将操作路由到正确的数据库和表上,实现了透明化的分库分表。 首先,我们来看`jdbc.properties`文件,这是配置数据库连接的关键。在该文件中,我们需要定义...
2. **动态SQL**:Mybatis本身支持动态SQL,插件会利用这一特性,在执行SQL语句时自动插入分片键和分片策略,使得SQL能在各个分片上正确执行。 3. **连接池管理**:为了高效地访问多个数据库,插件通常会集成连接池...
**分表分库技术概述** 在大数据量的业务场景中,单个数据库往往无法承受高并发、大数据量的处理压力,这时就需要引入分表分库技术。分表是指将一张大表按照一定的规则拆分成多个小表,分散到不同的数据库服务器上,...
在这种背景下,单一数据库往往难以承受巨大的数据处理压力,因此,采用分库分表技术成为了提高数据库性能的有效手段之一。本文主要探讨MySQL大数据分库和分表的PHP解决方案,并通过具体的案例分析来加深理解。 ####...
Sharding-JDBC作为阿里巴巴开源的一款轻量级数据库中间件,它提供了一种无侵入的分库分表解决方案,非常适合于单体项目的数据库扩展。在这个"集成sharding-jdbc实现分库分表.zip"的压缩包中,我们可以深入学习如何将...
《使用ShardingJDBC5.1.1实现按月分库分表、读写分离与自动创表的全面实战》 在现代企业级应用中,数据量的快速增长使得数据库的性能优化成为至关重要的环节。ShardingJDBC作为一款轻量级的Java框架,能够有效地...
5. **编写Mapper接口和XML**:按照MyBatis的常规方式,创建Mapper接口和对应的XML文件,但在SQL语句中要注意,由于表名和字段已经发生了变化,需要根据分片规则进行调整。 6. **测试和运行**:编写测试类,使用...