复制代码 代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE function [dbo].[SplitString]
(
@Input nvarchar(max),
@Separator nvarchar(max)=',',
@RemoveEmptyEntries bit=1
)
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)

结果,截个图来看一下:

更多相关文章

  1. Android(安卓)模糊搜索rawquery bind or column index out of ra
  2. 保留用户自定义设置
  3. Android常用控件
  4. Android(安卓)Studio & ADT 快捷键配置文件所在目录,自定义后可导
  5. Android(安卓)下拉刷新,非常强大的下拉刷新功能
  6. Android架构分析之使用自定义硬件抽象层(HAL)模块
  7. android 自定义view
  8. android listview custom style 自定义样式
  9. Android(安卓)-- Android(安卓)JUint 与 Sqlite

随机推荐

  1. 理解缓存系统的三个问题
  2. mysql group_concat 获取一对多的数据
  3. 手把手教你白嫖一个服务器并搭建自己的远
  4. Matplotlib 中等高线图(contour)的绘制
  5. 努力不一定能成,不努力一定不成
  6. 【Android】实现登录、注册、数据库操作(
  7. 万字长文详解Python正则表达式及re模块
  8. 浅谈生活中的短网址和短ID
  9. Markdown中输入数学公式及LaTex常用数学
  10. 笔试练习题(十)