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
投稿

猜你喜欢

  • golang 数组去重,利用map的实现

    2024-04-27 15:37:49
  • Javascript 类型转换方法

    2024-04-10 10:51:21
  • window10下mysql 8.0.20 安装配置方法图文教程

    2024-01-14 19:08:59
  • python3.3使用tkinter开发猜数字游戏示例

    2023-09-05 06:53:02
  • 基于Python实现一个简单的银行转账操作

    2023-05-29 16:39:26
  • 动态SQL中返回数值的实现代码

    2012-01-05 18:53:54
  • SQL JOIN 连接详细介绍及简单使用实例

    2024-01-22 00:27:50
  • 解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题

    2023-11-08 21:32:55
  • 深入了解mysql长事务

    2024-01-28 10:29:32
  • Python3之文件读写操作的实例讲解

    2023-07-27 15:57:45
  • JS highcharts动态柱状图原理及实现

    2024-04-22 12:52:17
  • 这些关于Go中interface{}的注意事项你都了解吗

    2024-02-01 08:20:19
  • 详解python 3.6 安装json 模块(simplejson)

    2023-08-04 10:55:03
  • Python保存数据至MySQL时中文问题

    2011-02-23 12:06:00
  • MySQL SQL语句优化的10条建议

    2024-01-19 23:41:28
  • python反转(逆序)字符串的6种方法详细

    2023-03-14 10:38:41
  • javascript replace方法与正则表达式

    2024-04-19 10:03:37
  • Go语言将string解析为time.Time时两种常见报错

    2024-05-22 17:45:48
  • 在Python中合并字典模块ChainMap的隐藏坑【推荐】

    2022-11-16 09:48:18
  • python保存二维数组到txt文件中的方法

    2022-03-06 23:32:24
  • asp之家 网络编程 m.aspxhome.com