SQLServer 简单数据拆分

--1. 旧的解决方法(sql server 2000)

create table tb(id int,value varchar(30))

insert into tb values(1,‘aa,bb‘)

insert into tb values(2,‘aaa,bbb,ccc‘)

go

--方法1.使用临时表完成

SELECT TOP 8000 id = IDENTITY(int, 1, 1) INTO # FROM syscolumns a, syscolumns b

SELECT A.id, value = SUBSTRING(A.[value], B.id, CHARINDEX(‘,‘, A.[value] + ‘,‘, B.id) - B.id)

FROM tb A, # B

WHERE SUBSTRING(‘,‘ + A.[value], B.id, 1) = ‘,‘

DROP TABLE #

--方法2.如果数据量小,可不使用临时表

select a.id , value = substring(a.value , b.number , charindex(‘,‘ , a.value + ‘,‘ , b.number) - b.number)

from tb a join master..spt_values  b

on b.type=‘p‘ and b.number between 1 and len(a.value)

where substring(‘,‘ + a.value , b.number , 1) = ‘,‘

--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

--方法1.使用xml完成

SELECT A.id, B.value FROM

(

SELECT id, [value] = CONVERT(xml,‘‘ + REPLACE([value], ‘,‘, ‘‘) + ‘‘) FROM tb

) A OUTER APPLY

(

SELECT value = N.v.value(‘.‘, ‘varchar(100)‘) FROM A.[value].nodes(‘/root/v‘) N(v)

) B

--方法2.使用CTE完成

;with tt as

(select id,[value]=cast(left([value],charindex(‘,‘,[value]+‘,‘)-1) as nvarchar(100)),Split=cast(stuff([value]+‘,‘,1,charindex(‘,‘,[value]+‘,‘),‘‘) as nvarchar(100)) from tb

union all

select id,[value]=cast(left(Split,charindex(‘,‘,Split)-1) as nvarchar(100)),Split= cast(stuff(Split,1,charindex(‘,‘,Split),‘‘) as nvarchar(100)) from tt where split>‘‘

)

select id,[value] from tt order by id option (MAXRECURSION 0)

DROP TABLE tb

时间: 2024-08-06 07:19:53

SQLServer 简单数据拆分的相关文章

SqlServer简单数据分页

手边开发的后端项目一直以来都用的.NET MVC框架,访问数据库使用其自带的EF CodeFirst模式,写存储过程的能力都快退化了 闲来无事,自己写了条分页存储过程,网上类似的文章多的是,这里只列了一种情况,依据分析函数生成行号来实现分页查询 环境:sqlServer 2014 创建数据库过程不再敖述,这里直接进入重点: 1.首先创建了一张TestAdmin表,主键为ID字段int类型且自增 1 create table TestAdmin ( 2 Id int identity(1,1) p

Talend open studio数据导入、导出、同步Mysql、oracle、sqlserver简单案例

推荐大家一个BI工具:talend open studio.我也是刚接触,懂得不多,感觉比较神奇就想大家推荐一下... 由于公司项目,接触了一下BI工具talend,感觉功能很强大, 可以同步多种数据库,同时可以清洗.筛选.java代码处理数据.数据导入导出. 甚至可以内联查询多种数据库,感觉比较神奇.当然我们可以借助sql语句和程序也可以实现,不过对于百万条的数据,安全性和可靠性...? 这个作业涉及到:excel数据导入.数据清洗.java代码数据处理.MySql同步.Mysql和Oracl

SQLServer简单介绍

SQLServer简单介绍 Sqlserver的版本分为: ①      企业版: 全面 ②      标准版: 适合中小企业的需求 ③      工作组版: 理想的数据管理解决方案,大小和用户数量没有限制的小型企业 ④      开发版: 覆盖企业版的所有功能,但是只允许开发和测试使用,不允许做为生产系统 ⑤      免费版: Sqlserver的使用: 连接数据库 a) 检查是否开启服务:  方法一:  Microsoft…à配置工具àsqlserver配置管理器à(左)sqlserver

SqlServer简单的操作XML以及SQl的 try catch等统一格式

1:SqlServer简单的操作XML: ALTER PROCEDURE [dbo].[SP_CRM_FranchiseeRecharge_Money] @Create_By VARCHAR(50), @xmlStr1 NVARCHAR(MAX) -写在这里面的为 传入的参数 AS BEGIN as begin后面的为自定义的变量 SET NOCOUNT ON; DECLARE @xml XML = @xmlStr1; sqlserver操作XML T-SQL提供了以下几个针对XML类型的查询函

cocos2d-x 之 简单数据存储——Userdefault

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 好久没有更新cocos2d-x的东西了,是在太忙,木有时间啊= =.. 1.基本概念 本篇文章是介绍,简单数据存储的Userdefault类,在API中: 就是存储一些简单的数据,比如声音的开启关闭,音效的开启关闭,最高分,金币数量的存储这些东西. 2.获取 这

Android技术10:Java与C语言之间简单数据的传递

由于C语言和Java语言之间很多类型不一致性,因此使用native时,需要数据类型转换.下面演示分别传递整型,字符串,整型数组,Java静态方法传递数据. 1.创建native方法 我们单独创建一个NativeClass类来存放native方法 1 package com.forsta.ndk; 2 3 public class NativeClass { 4 public native int add(int x,int y); 5 public native String showStrin

Android Bundle传递简单数据、对象数据

Android开发过程中进程遇到组件之间.进程之间等数据的传递,数据传递有很多种,其中使用Bundle传递非常方便. Bundle可以传递多种数据,是一种类似map的key-value数据结构 简单的调用如下所示 Bundle bundle=new Bundle(); bundle.put***(key,value) 但是有时候需要我们传递一个对象,做法就是先把该对象使用serializable序列化 public class Book implements Serializable{ } 然后

sqlserver 大数据量的insert、delete操作优化

http://blog.csdn.net/lanyuzhen/article/details/7547476 --大批量导出orders表:insert DBCC DROPCLEANBUFFERS  DBCC FREEPROCCACHE goSET NOCOUNT ON BEGIN TRANSACTION  INSERT INTO test.dbo.orders with(tablock) SELECT * FROM bak.dbo.OrdersWHERE ordertime BETWEEN '

【转】Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)

本篇文章主要介绍了"Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)",主要涉及到Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)方面的内容,对于Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)感兴趣的同学可以参考一下. 持久化简单的数据储存在Unity3D 中提供了一个简单有效的方法,如果之前的你做过Android的开发你会发现在Unity3D中持久化数据的储存和Android非常的想象.那么下面MOMO 将用一