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

通过思考、搜索,在网上找到了博主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. AES加密解密通用版Object-C / C# / JAVA

    1.无向量 128位 /// <summary> /// AES加密(无向量) /// </summary> /// <param name="plainByt ...

  2. ActiveMQ

    前言 MQ--Message Queue,中文翻译为"消息队列",维基百科上的这样描述: 消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方 ...

  3. WebGL与three.js

    前面学习了一些webgl的基础知识,现在就用一下three.js写一个小例子,记录一下学习的过程. 效果图: 1.去github下载three.js,然后将它加载到网页中 <script src ...

  4. 解决安装mysql的”A Windows service with the name MySQL already exists.“问题

    如果以前安装过mysql,卸载重装,很可能会碰到"A Windows service with the name MySQL already exists."这样的提示.即服务已经 ...

  5. TPC-H

    http://blog.csdn.net/leixingbang1989/article/details/8766047

  6. .NET 读取本地文件绑定到GridViewRow

    wjgl.aspx.cs: using System; using System.Collections; using System.Configuration; using System.Data; ...

  7. python27 ImportError: No module named site

    运行 python27 时发现 提示这个错误 在http://stackoverflow.com/questions/5599872/python-windows-importerror-no-mod ...

  8. iOS 图片文件格式判断、圆角图片

    1.圆角图片 // 设置圆形图片(放到分类中使用) - (UIImage *)cutCircleImage { UIGraphicsBeginImageContextWithOptions(self. ...

  9. three.js模型

    Three.js有一系列导入外部文件的辅助函数,是在three.js之外的,使用前需要额外下载, 在https://github.com/mrdoob/three.js/tree/master/exa ...

  10. 【加精】手机话费充值API接口(PHP版)

    电商周年庆,公司搞了一个关注微信公众号送小额话费的活动,送1元.2元.5元.10元.20元.50元等不同面值的. 为了实现话费充值服务,找了多家开通了话费接口服务,接入后测试.先是做接口整合的平台,P ...