在SqlServer2008R2中,根据分隔符把一列的值切割成多列
近期工作中,有个如上图效果的需求:将一个字段里面的值,以“,"切割成多列
通过思考、搜索,在网上找到了博主Microshaoft的文章:
妙用 T-SQL: PARSENAME 函数 (也可不使用该函数,鸣谢"小杰") 实现按指定分隔符拆分字符串 SplitString
原帖地址:http://www.cnblogs.com/Microshaoft/archive/2005/05/10/152325.html
在此,感谢博主及为此付出的朋友!
下面,创库、表、测试数据学习下。
create database TestDB
go use TestDB
go create table TestDB.dbo.testTab(
tId bigint identity(1,1) NOT NULL,
tField nvarchar(100) null
)
go insert into TestDB.dbo.testTab values('仙桃西-汉口,武汉-仙桃西')
insert into TestDB.dbo.testTab values('上海-仙桃西')
insert into TestDB.dbo.testTab values('北京-上海-深圳,北京-武汉,深圳-上海-北京,武汉-北京')
insert into TestDB.dbo.testTab values('上海-北京,上海-武汉-重庆,北京-上海,重庆-武汉-上海')
insert into TestDB.dbo.testTab values('杭州-上海-北京,西藏-武汉,武汉-西藏,武汉-成都')
insert into TestDB.dbo.testTab values('成都-北京-哈尔滨,哈尔滨-北京,杭州-上海,广州-武汉,成都-上海,上海-武汉') select * from TestDB.dbo.testTab
--创建函数
use TestDB
go create function dbo.SplitSubString
(
@Expression varchar(8000)
,@Delimiter varchar(100)
,@ int
)
returns varchar(8000)
as
begin declare @p int
set @p = CharIndex(@Delimiter,@Expression)
if @p > 0
begin
set @p = @p + len(@Delimiter) - 1
end
declare @i int
set @i = 1
while @i < @
begin
set @i = @i + 1
set @Expression = substring (@Expression, @p + 1,len(@Expression) - @p )
set @p = CharIndex(@Delimiter,@Expression)
if @p > 0
begin
set @p = @p + len(@Delimiter) - 1
end
else
begin
break
end
end declare @s varchar(1000)
if @p = 0 and @i = @
begin
set @s = @Expression
end
else if @i = @
begin
set @s = substring(@Expression, 1,@p - len(@Delimiter))
end
return @s
end GO
--查询
select tField
,TestDB.dbo.SplitSubString(tField,',',1) as tField1
,TestDB.dbo.SplitSubString(tField,',',2) as tField2
,TestDB.dbo.SplitSubString(tField,',',3) as tField3
,TestDB.dbo.SplitSubString(tField,',',4) as tField4
,TestDB.dbo.SplitSubString(tField,',',5) as tField5
,TestDB.dbo.SplitSubString(tField,',',6) as tField6
from TestDB.dbo.testTab
函数说明:dbo.SplitSubString(字段名,分隔符,第几段)
有问题,留言讨论,谢谢!
在SqlServer2008R2中,根据分隔符把一列的值切割成多列的更多相关文章
- 在sql中如何把一列的值拆分成多列
- 用fastreport在进行多列打印时,默认是先行后列,如何改成先列后行排记录?
例子程序中的6.fr3是在Page中设置 columns=2这样就是先行后列,7.fr3就是3列先列后行的例子 1 6 2 7 3 8 4 9 5 10 但如果 ...
- Excel表格中依据某一列的值,将这列中一样的数据放在一个文件中。
一需求:按照标题C的内容,一样的数据整理到一个文件中. 二.操作: 1.atl+F11弹出vb窗口 2.点击 插入===>模块 ,复制以下代码,注意这是一个表头为三行的函数(保存 ...
- 【sql进阶】SQL Server 将某一列的值拼接成字符串
今天在统计报表的时候有这么一个需求,将一列字符串拼接成一行,然后展示到新的列中. 每一项的服务列表如下: 最终想要的结果是 sql如下: select AuxTypeName + ',' from ( ...
- Repeater,ItemDataBound事件,获取绑定列的值,给指定列添加js方法
protected void rp_bf_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ...
- oracle数据库将一列的值拼接成一行,并且各个值之间用逗号隔开
使用场景:把某一列值转换为逗号分隔的字符串 例子:比如查询所有的的表空间如下,现在要获得所有的表空间用逗号分隔的字符串(比如rman duplicate的时候skip表空间) SQL> sele ...
- SQL Server 将某一列的值拼接成字符串
名称 海鲜水产 水果蔬菜 海参 肉禽蛋 牛排 腊味 生鲜食品 将以上一列变成: 生鲜食品,海鲜水产,水果蔬菜,海参,牛排,肉禽蛋,腊味 sql for xml path('')
- sql 将某一列的值拼接成字符串
) set @str='' -- 必须先赋值 ))+',' from( select [objid],sfrq from tablename ) tb order by tb.sfrq print @ ...
- 基于CRM跟进(活动)记录中关键字识别的客户跟进加权值的成单概率算法
1.提取销售人员的跟进记录,分析其中的骂人文字(负面情绪),将有负面情绪的客户的跟进排期,进行降权(权重)操作.重点跟进加权值较高的客户. 执行办法: 将销售与客户沟通的语音:电话,微信,QQ,通过调 ...
随机推荐
- dos学习
>>>>>>>>>> arp-a:查看路由缓存表,所有的IP都在这里. ping <ip地址(例:192.168.x.x)>:查 ...
- 【转】Wireshark基本用法
原地址:http://blog.jobbole.com/70907/ 按照国际惯例,从最基本的说起. 抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名, ...
- MySQL学习笔记01_数据库基础知识
01_1 mysql数据库启动与停止 以<管理员权限>启动cmd: 输入net stop mysql停止mysql服务: 输入net start mysql启动mysql服务: 输入mys ...
- db2定界符
在DB2数据库中,在导出DEL文件时,默认的字符分隔符是".字段分隔符是, (逗号).有一个需求是要为Oracle数据库提供数据,因此就想使用"|"作为数据的字段分隔符. ...
- db2 日期时间格式
db2日期和时间常用汇总 1.db2可以通过SYSIBM.SYSDUMMY1.SYSIBM.DUAL获取寄存器中的值,也可以通过VALUES关键字获取寄存器中的值. SELECT 'HELLO DB2 ...
- 前端面试那些坑之HTML篇
HTML 1.Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<html> 标签之前.告知浏览器的解析 ...
- HOW TO RUN A SPRINT PLANNING MEETING (THE WAY I LIKE IT)
This is a sample agenda for a sprint planning meeting. Depending on your context you will have to ch ...
- js中this的用法
经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay
- tomcat之Session的管理
Session是由服务器端的应用服务器容器(如Tomcat.Jetty)存储的.下面分析一下Tomcat是如何管理Session的. 转自:tomcat架构分析 (Session管理) Tomcat中 ...
- java web(七)Cookie的简单使用
一.概述 测试 //1.创建一个Cookie对象 //Cookie cookie1=new Cookie("name","xrk"); //2.调用 ...