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

通过思考、搜索,在网上找到了博主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. 【算法杂谈】Miller-Rabin素性测试算法

    额,我们今天来讲一讲Miller-Rabin素性测试算法. 读者:怎么又是随机算法!!!(⊙o⊙)… [好了,言归正传] [费马小定理] 费马小定理只是个必要条件,符合费马小定理而非素数的数叫做Car ...

  2. 【NEUQACM OJ】1017: 平面切割(特别版)

    1017: 平面切割(特别版) 题目描述 我们要求的是n条闪电型折线分割平面的最大数目.比如,一条闪电型折线可以将平面分成两部分,两条最多可以将平面分成12部分,三条最多可将平面分成31部分,四条最多 ...

  3. js排序算法总结——冒泡,快速,选择,插入,希尔,归并

    相信排序是任何一个程序猿都会用到的东西,今天简单总结记录下常见的排序算法. 一.冒泡排序 说起冒泡排序,可能每个人都不会陌生,实现思路相当简单明了,就是不停的对数组进行两两比较,将较大(较小)的一项放 ...

  4. Android自定义折线图

    老师布置了个作业:http://www.cnblogs.com/qingxu/p/5316897.html 作业中提到的 “玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动.” ...

  5. javascript基础知识

    1.javascript 表单验证,减轻服务器压力 制作网页特效 动态改变页面内容 基于对象和事件驱动的,具有安全性能的脚本语言 交互,脚本语言.解释性语言,边执行边解释 2.script标签 添加位 ...

  6. java空指针异常:java.lang.NullPointException

    一.什么是java空指针异常 我们都知道java是没有指针的,这里说的"java指针"指的就是java的引用,我们不在这里讨论叫指针究竟合不合适,而只是针对这个异常本身进行分析.空 ...

  7. Ambari组件黄色预警

    Ambari组件黄色预警 组件上为黄色问号,代表心跳丢失,解决如下: 1.  查看个节点之间是否可以相互通信,若ssh连接不上,有可能是该节点关机了,没有打开,手动开启该节点,再次验证是否可互通. 2 ...

  8. php随机ip

    $ip_long = array( array('607649792', '608174079'), //36.56.0.0-36.63.255.255 array('1038614528', '10 ...

  9. Windows多线程多任务设计初步(转)

    Windows多线程多任务设计初步 [前言:]当前流行的Windows操作系统,它能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程 ...

  10. CSS垂直水平居中方法总结

    在布局的时候经常能用到居中,在此总结一下 html结构: <div class="wrap"> <div class="content"> ...