近期工作中,有个如上图效果的需求:将一个字段里面的值,以“,"切割成多列

通过思考、搜索,在网上找到了博主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中,根据分隔符把一列的值切割成多列的更多相关文章

  1. 在sql中如何把一列的值拆分成多列

  2. 用fastreport在进行多列打印时,默认是先行后列,如何改成先列后行排记录?

    例子程序中的6.fr3是在Page中设置 columns=2这样就是先行后列,7.fr3就是3列先列后行的例子 1     6 2     7 3     8 4     9 5     10 但如果 ...

  3. Excel表格中依据某一列的值,将这列中一样的数据放在一个文件中。

    一需求:按照标题C的内容,一样的数据整理到一个文件中. 二.操作: 1.atl+F11弹出vb窗口 2.点击       插入===>模块   ,复制以下代码,注意这是一个表头为三行的函数(保存 ...

  4. 【sql进阶】SQL Server 将某一列的值拼接成字符串

    今天在统计报表的时候有这么一个需求,将一列字符串拼接成一行,然后展示到新的列中. 每一项的服务列表如下: 最终想要的结果是 sql如下: select AuxTypeName + ',' from ( ...

  5. Repeater,ItemDataBound事件,获取绑定列的值,给指定列添加js方法

    protected void rp_bf_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ...

  6. oracle数据库将一列的值拼接成一行,并且各个值之间用逗号隔开

    使用场景:把某一列值转换为逗号分隔的字符串 例子:比如查询所有的的表空间如下,现在要获得所有的表空间用逗号分隔的字符串(比如rman duplicate的时候skip表空间) SQL> sele ...

  7. SQL Server 将某一列的值拼接成字符串

    名称 海鲜水产 水果蔬菜 海参 肉禽蛋 牛排 腊味 生鲜食品 将以上一列变成: 生鲜食品,海鲜水产,水果蔬菜,海参,牛排,肉禽蛋,腊味 sql for xml path('')

  8. sql 将某一列的值拼接成字符串

    ) set @str='' -- 必须先赋值 ))+',' from( select [objid],sfrq from tablename ) tb order by tb.sfrq print @ ...

  9. 基于CRM跟进(活动)记录中关键字识别的客户跟进加权值的成单概率算法

    1.提取销售人员的跟进记录,分析其中的骂人文字(负面情绪),将有负面情绪的客户的跟进排期,进行降权(权重)操作.重点跟进加权值较高的客户. 执行办法: 将销售与客户沟通的语音:电话,微信,QQ,通过调 ...

随机推荐

  1. Hibernate jpa 在实体类中对于时间的注解

    在时间类型DATE 属性上添加一个 @Temporal(TemporalType.DATE)(精确到年月日)@Temporal(TemporalType.TIME)(精确到时分秒)@Temporal( ...

  2. 在Axure中使用iconfonts

    转载:http://gabriel-t.lofter.com/post/2ee8fc_12c3b4b https://icomoon.io/app/#/select

  3. Drools 规则学习

    Drools 规则学习 在 Drools 当中,一个标准的规则文件就是一个以“.drl”结尾的文本文件,由于它是一个标准的文本文件,所以可以通过一些记事本工具对其进行打开.查看和编辑.规则是放在规则文 ...

  4. sencha touch的开源插件和例子

    写了好久的sencha touch,没想到换工作竟然一年多没有搞了.因为项目的缘故收集了好多的组件,由于懒惰,没有整理,现在想想有点后悔了,再加上如果就这样丢弃,感觉有些遗憾,今天整理了一下放在git ...

  5. python 爬虫(四)

    爬遍整个网络 1 当我们访问整个网络的时候,我们不可避免的会访问不同的网站,但是不同的网站会有完全不同的结构和内容... 现在一步一步的构建访问整个网络的脚本 I 从一个网站开始,每一次都爬向不同的网 ...

  6. 推荐Linux管理员不可不知十大PHP安全要点 - SCutePHP

    PHP是使用最广泛的脚本编程语言之一.市场份额颇能说明其主导地位.PHP 7已推出,这个事实让这种编程语言对当前的开发人员来说更具吸引力.尽管出现了一些变化,但是许多开发人员对PHP的未来持怀疑态度. ...

  7. 螺旋方阵(4x4)(java实现)

    代码如下: public class N { public static void main(String[] args) { final int N=4; int a[][]=new int[N][ ...

  8. Android api SmsMessage类createFromPdu(byte[] pdu) is depracted(不推荐使用,过时的)

    我想实现一个,监听功能--当手机收到相关短信,触发一些时间,程序中 SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj); cr ...

  9. 第2章 新手必须掌握的Linux命令

      第2章 新手必须掌握的Linux命令 章节简述: 本章节讲述系统内核.Bash解释器的关系与作用,教给读者如何正确的执行Linux命令以及常见排错方法. 经验丰富的运维人员可以恰当的组合命令与参数 ...

  10. 20145216 20145330 《信息安全系统设计基础》 实验五 简单嵌入式WEB 服务器实验

    20145216 20145330 <信息安全系统设计基础> 实验五 简单嵌入式WEB 服务器实验 实验报告封面 实验步骤 1.阅读理解源码 进入/arm2410cl/exp/basic/ ...