@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
不知道怎么写?

解决方案 »

  1.   


    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 + '''')
      

  2.   

    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
    给个结果也不怎么感觉实用,自己选择吧
      

  3.   

    /*
    功能:实现split功能的函数
    */create function dbo.fn_split 
    (
    @inputstr varchar(8000), 
    @seprator varchar(10)
    )
    returns @temp table (a varchar(200))
    as begin
    declare @i intset @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)
    endif @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 行)
    */
      

  4.   

    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
      

  5.   

    charindex
    速度更快,呵呵