求字符串带汉字的一个分割函数?

happy_test 2007-07-09 12:16:44
把 下列的字符串
测试文件1,测试2,测试件3,
转成下面的3行

测试文件1
测试2
测试件3
的一个函数!

...全文
156 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy_test 2007-07-09
  • 打赏
  • 举报
回复
谢谢!
bill024 2007-07-09
  • 打赏
  • 举报
回复
create function f_splitStr(@s varchar(8000),@split varchar(10))
returns @tb table(col varchar(100))
as
begin
declare @t table(id int identity,b bit)
insert @t select top 100 0 from syscolumns a,syscolumns b
insert @tb select substring(@s,id,charindex(@split,@s+@split,id)-id)
from @t
where id<=len(@s+'!') and charindex(@split,@split+@s,id)=id
return
end
go
select * from dbo.f_splitStr('测试文件1,测试2,测试件3',',')
drop function f_splitStr

col
----------
测试文件1
测试2
测试件3
chuifengde 2007-07-09
  • 打赏
  • 举报
回复
create function fun_getStr(@a nvarchar(100))
returns @t table(a nvarchar(100))
as
begin
set @a=@a+','
while charindex(',',@a)>0
begin
insert @t select left(@a,charindex(',',@a)-1)
set @a=right(@a,len(@a)-charindex(',',@a))
end
return
end
go

select * from dbo.fun_getStr('测试文件1,测试2,测试件3')
happy_test 2007-07-09
  • 打赏
  • 举报
回复
可以帮我写个函数嘛 ?
yrwx001 2007-07-09
  • 打赏
  • 举报
回复
create table #t (field varchar(1000))
insert #t
select '测试文件1,测试2,测试件3,'

declare @sql varchar(8000)
set @sql = ''
select @sql = replace(field,',',''' union all select ''') from #t
set @sql = 'select '' ' + REVERSE(stuff(REVERSE(@sql),3,16,''))

set @sql = REVERSE(stuff(REVERSE(@sql),1,1,''))
print @sql
exec(@sql)

drop table #t
jacket008 2007-07-09
  • 打赏
  • 举报
回复

declare @tb table
(
F1 varchar(8000)
)
declare @str varchar(8000),@st1 varchar(8000),@I int
select @str='测试文件1,测试2,测试件3,'
select @I=charindex(',',@str)
while @I > 0
begin
insert into @tb
select substring(@str,1,@I-1)
select @str=substring(@str,@I+1,8000)
select @I=charindex(',',@str)
end
select * from @tb


/*
F1
-------
测试文件1
测试2
测试件3
*/

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧