字符串出理

sisiz 2008-04-01 10:10:15
@picTag nvarchar(200)
AS
declare @str nvarchar(200)
set @str='a936d1ed-e567-486d-9899-01e0a6020f97.jpg 659c2e3d-9f3e-4c2a-aaf3-5be593017586.jpg 6a0f4c7f-542b-4eb3-8dfc-7dc30013bf94.jpg'
str是用空格隔开的,循环要读取
a936d1ed-e567-486d-9899-01e0a6020f97.jpg
659c2e3d-9f3e-4c2a-aaf3-5be593017586.jpg
6a0f4c7f-542b-4eb3-8dfc-7dc30013bf94.jpg


我的思路是
while (条件)
@strname=a936d1ed-e567-486d-9899-01e0a6020f97.jpg


不知道怎么写?
...全文
64 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zanyzyg 2008-04-01
  • 打赏
  • 举报
回复


charindex
速度更快,呵呵
zanyzyg 2008-04-01
  • 打赏
  • 举报
回复
begin
declare @str nvarchar(200)
declare @name nvarchar(100)
set @str='a936d1ed-e567-486d-9899-01e0a6020f97.jpg 659c2e3d-9f3e-4c2a-aaf3-5be593017586.jpg 6a0f4c7f-542b-4eb3-8dfc-7dc30013bf94.jpg'
set @name=''
while len(@str)>0
begin
if substring(@str,1,1)='' begin select @name set @name='' end
else set @name=@name+substring(@str,1,1)
set @str=substring(@str,2,len(@str)-1)
end
select @name
end
-狙击手- 2008-04-01
  • 打赏
  • 举报
回复
/*
功能:实现split功能的函数
*/

create function dbo.fn_split
(
@inputstr varchar(8000),
@seprator varchar(10)
)
returns @temp table (a varchar(200))
as

begin
declare @i int

set @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)

while @i >= 1
begin
insert @temp values(left(@inputstr, @i - 1))

set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
end

if @inputstr <> '\'
insert @temp values(@inputstr)

return
end
go

--调用

declare @s varchar(1000)

set @s='a936d1ed-e567-486d-9899-01e0a6020f97.jpg 659c2e3d-9f3e-4c2a-aaf3-5be593017586.jpg 6a0f4c7f-542b-4eb3-8dfc-7dc30013bf94.jpg'

select * from dbo.fn_split(@s,' ')

drop function dbo.fn_split


/*
a
------------------------------------------------
a936d1ed-e567-486d-9899-01e0a6020f97.jpg
659c2e3d-9f3e-4c2a-aaf3-5be593017586.jpg
6a0f4c7f-542b-4eb3-8dfc-7dc30013bf94.jpg

(所影响的行数为 3 行)
*/


nextflying 2008-04-01
  • 打赏
  • 举报
回复
declare @str nvarchar(200)
set @str='a936d1ed-e567-486d-9899-01e0a6020f97.jpg 659c2e3d-9f3e-4c2a-aaf3-5be593017586.jpg 6a0f4c7f-542b-4eb3-8dfc-7dc30013bf94.jpg'
declare @pos int
set @pos = CHARINDEX( ' ' , @str ,0)
while( @pos > 0)
begin
select left(@str , @pos)
set @pos = CHARINDEX( ' ' , @str ,0)
set @str = right(@str , len(@str) - @pos)
end


给个结果也不怎么感觉实用,自己选择吧
nextflying 2008-04-01
  • 打赏
  • 举报
回复
1 楼妙解 但不怎么实用
viva369 2008-04-01
  • 打赏
  • 举报
回复

declare @str nvarchar(200)
set @str='a936d1ed-e567-486d-9899-01e0a6020f97.jpg 659c2e3d-9f3e-4c2a-aaf3-5be593017586.jpg 6a0f4c7f-542b-4eb3-8dfc-7dc30013bf94.jpg'
set @str = replace(@str,' ',' ''union all select'' ')
exec ('select ''' + @str + '''')

34,594

社区成员

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

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