例子如下:
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表行数据的简单方法。
分表是一种数据库分割技术,用于将大表拆分成多个小表,以提高数据库的性能和可管理性。在MySQL中,可以使用多种方法进行分表,例如基于范围、哈希或列表等。下面将详细介绍MySQL如何分表以及分表后如何进行数据查询...
mysql分表 程序如何改动 1.实现分表的原理如下 2.做mysql集群利用mysql cluster ,mysql proxy,mysql ...5.实现拆成二张表user1和user2,每张表25W条数据的方法代码。插入的数据方法代码 6.实现更新的方法代码
其实,相对于垂直切分更进一步的是服务化改造,说得简单就是要把原来强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看,因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表...
当出现这种情况时,我们可以考虑分库分表,即将单个数据库或表进行拆分,拆分成多个库和多个数据表,然后用户访问的时候,根据一定的算法与逻辑,让用户访问不同的库、不同的表,这样数据分散到多个数据表中,减少了...
项目中有需求要垂直分表,即按照时间区间将数据拆分到n个表中,PostgreSQL提供了分区表的功能。分区表实际上是把逻辑上的一个大表分割成物理上的几小块,提供了很多好处,比如: 1、查询性能大幅提升 2、删除历史...
数据存储演进思路一:单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。 数据存储演进思路二:单库多表 随着用户数量的增加,user表的...
如果非要按照地域来分,即使把表拆的再小,查询还是要联合所有表来查,还不如不拆了。所以一个好的拆分依据是 最重要的。关键字:UNION 例: 订单表根据订单产生时间来分表(一年一张) 学生情况表
垂直分表就是一个包含有很多列的表拆分成多个表,比如表A包含20个字段,现在拆分成表A1和A2,两个表各十个字段(具体如何拆根据业务来选择)。 优势:在高并发的情境下,可以减少表锁和行锁的次数。 劣势:在数据...
业务数据从原来的单库单表模式变成了数据被拆分到多个数据库,甚至多个表中,如果在数据访问层做一下功能的封装和管控,所有分库分表的逻辑和数据的跨库操作都交给应用的开发人员来实现,则对开发人员的要求变得相对...
:unicorn: FreeSql FreeSql是功能强大的O / RM组件,支持... :page_with_curl: 支持读/写分离,拆分表/数据库,全局过滤器,乐观和悲观的储物柜。 :deciduous_tree: 支持MySql / SqlServer / PostgreSQL / Oracle /
相关sql都需要改动2、分区,所有的数据还在一个表中,但物理存储数据根据一定的规则存放在不同的文件中,文件也可以放到另外磁盘上优点:代码维护量小,基本不用改动,提高IO吞吐量缺点:表的并发程度没有增加3、...
缺点:代码维护成本高,相关sql都需要改动 2、分区,所有的数据还在一个表中,但物理存储数据根据一定的规则存放在不同的文件中,文件也可以放到另外磁盘上 优点:代码维护量小,基本不用改动,提高IO吞吐量 ...
分表分库 (水平分割,垂直分割) 主从复制、读写分离 SQL 调优 对 MySQL 配置优化 (配置最大并发数 my.ini, 调整缓存大小) 定时清除不需要的数据,定时进行碎片整理 二、具体优化方案 (一)数据库设计—三大范式、...
主库故障,从库自动切换数据高可靠,定期快照备份,增量备份数据自动拆分,一键无缝迁移扩容针对特殊业务需求,定制优化特殊的数据库版本原生MySQL协议,接入使用标准MySQL客户端数据根据路由规则分库分表,...
Mysql 的分区技术与水平分表有点类似, 但是它是在逻辑层进行的水平分表, 对于应用而言它还是一张表, 换句话说: 分区不是实际真正的对一张表进行拆分,分区之后表还是一个表,它是把存储文件进行拆分。 在 Mysql ...
[升级]资源数据主表拆分,列表数据与内容大文本数据分表,以提升列表访问性能,减轻数据库压力。 [升级]频道管理,可以指定某频道个性化的目录生成规则、生成文件命名规则。 [修改]系统权限的管理,及权限在未来...
系统内核重新编写,提升系统灵活性及可扩展能力 [升级]资源数据主表拆分,列表数据与内容大文本数据分表,以提升列表访问性能,减轻数据库压力。 [升级]频道管理,可以指定某频道个性化的目录生成规则、生成...
一、MS SQL SERVER 20000服务器安装: 11 二、服务器安装: 19 三、客户端安装: 21 第二节、系统初始化 23 1、运行WinScock服务器 23 运行《自来水综合管理信息系统服务器端》 24 3、运行《自来水综合管理信息系统...