SQLServer中的切割字符串SplitString函数

作者:Kudy 来源:asp之家 时间:2011-12-01 08:14:09 

代码如下:


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
by kudychen 2011-9-28
*/
CREATE function [dbo].[SplitString]
(
@Input nvarchar(max), --input string to be separated
@Separator nvarchar(max)=',', --a string that delimit the substrings in the input string
@RemoveEmptyEntries bit=1 --the return value does not include array elements that contain an empty string
)
returns @TABLE table
(
[Id] int identity(1,1),
[Value] nvarchar(max)
)
as
begin
declare @Index int, @Entry nvarchar(max)
set @Index = charindex(@Separator,@Input)
while (@Index>0)
begin
set @Entry=ltrim(rtrim(substring(@Input, 1, @Index-1)))
if (@RemoveEmptyEntries=0) or (@RemoveEmptyEntries=1 and @Entry<>'')
begin
insert into @TABLE([Value]) Values(@Entry)
end
set @Input = substring(@Input, @Index+datalength(@Separator)/2, len(@Input))
set @Index = charindex(@Separator, @Input)
end
set @Entry=ltrim(rtrim(@Input))
if (@RemoveEmptyEntries=0) or (@RemoveEmptyEntries=1 and @Entry<>'')
begin
insert into @TABLE([Value]) Values(@Entry)
end
return
end


如何使用: 

代码如下:


declare @str1 varchar(max), @str2 varchar(max), @str3 varchar(max)
set @str1 = '1,2,3'
set @str2 = '1###2###3'
set @str3 = '1###2###3###'
select [Value] from [dbo].[SplitString](@str1, ',', 1)
select [Value] from [dbo].[SplitString](@str2, '###', 1)
select [Value] from [dbo].[SplitString](@str3, '###', 0)


执行结果:

里面还有个自增的[Id]字段哦,在某些情况下有可能会用上的,例如根据Id来保存排序等等。

例如根据某表的ID保存排序: 

代码如下:

update a set a.[Order]=t.[Id] from [dbo].[表] as a join [dbo].SplitString('1,2,3', ',', 1) as t on a.[Id]=t.[Value]


具体的应用请根据自己的情况来吧:)

标签:SQLServer,SplitString
0
投稿

猜你喜欢

  • asp显示字符串前5个文字

    2008-08-10 18:47:00
  • asp如何用Jmail组件的发送电子邮件?

    2010-06-12 12:51:00
  • 如何绕过ODBC直接访问SQL Server?

    2010-05-18 18:13:00
  • JavaScript 日期下拉选择器

    2008-10-31 12:13:00
  • sql server 带列名导出至excel

    2008-11-25 11:07:00
  • ASP 游标参数详解(ASP记录集)第1/2页

    2011-04-08 11:04:00
  • 在 mysql 中 定义 数据库,表,列时,设定的各个的编码格式

    2010-11-11 11:58:00
  • 国内ASP开源建站系统一览

    2009-07-10 13:21:00
  • oracle 数据库连接分析

    2009-07-28 10:42:00
  • sql server对字段的添加修改删除、以及字段的说明

    2012-01-05 18:50:52
  • ASP操作XML的方法

    2008-03-06 21:43:00
  • 我的ImageMagick使用心得

    2008-10-21 11:05:00
  • HTML,CSS和JavaScript速查表

    2010-09-16 13:02:00
  • [奇招] JS暴虐查找算法

    2008-07-06 21:17:00
  • 减少SQL Server死锁的方法

    2009-01-05 13:49:00
  • 《色彩解答》系列之二 色彩比例

    2008-02-17 14:38:00
  • 分类与类型的问题

    2008-09-12 13:10:00
  • ASP利用TCPIP.DNS组件获得域名对应的IP

    2009-11-07 19:21:00
  • 如何使用FSO搜索硬盘文件

    2007-09-27 12:59:00
  • 用JMail、CDONTS发送邮件asp源码

    2007-09-24 15:58:00
  • asp之家 网络编程 m.aspxhome.com