declare @s varchar(20) set @s=' aaa,bb,cc,dd,ee'--以‘,’作为分隔,把个部分取出来 select identity(int,1,1) id,@s [str] into # from syscolumns a,syscolumns bselect substring([str],id,charindex(',',','+[str]+',',id+1)-id-1) from # where substring(','+[str],id,1)=','drop table #/* -------------------- aaa bb cc dd ee(所影响的行数为 5 行) */ --取出第4字符到第10字符间的字符串 select substring(@s,4,10)/* -------------------- aa,bb,cc,d(所影响的行数为 1 行) */--取出‘,’最后一次出现的位置,并打印出来 select len(@s)-charindex(',',reverse(@s))+1/* ----------- 15(所影响的行数为 1 行) */
declare @s varchar(20) DECLARE @LINID VARCHAR(30) set @s=' aaa,bb,cc,dd,ee' DECLARE @I_WEIZHI int SET @I_WEIZHI=charindex(',',@S) --以‘,’作为分隔,把个部分取出来 WHILE (@I_WEIZHI)>0 BEGIN
SELECT @LINID=left(@S,(@I_WEIZHI-1)) SET @LINID=LTRIM(@LINID) SELECT @LINID
SET @S=SUBSTRING(@S,(@I_WEIZHI+1),(LEN(@S)-@I_WEIZHI))
SET @I_WEIZHI=charindex(',',@S)
END
create table #(Tid int IDENTITY (1,1)NOT NULL ,T varchar(10)) declare @s varchar(20) declare @T varchar(20) declare @i int set @i=1 set @s=' aaa,bb,cc,dd,ee' set @s=ltrim(@s) while @i<=4 begin insert # select left(@s,CHARINDEX(',',@s)-1) set @s=right(@s,len(@s)-CHARINDEX(',',@s)) set @i =@i +1 end select * from #
a)、 create table #TMP(Pro varchar(100)) insert into #TMP select ' aaa,bb,cc,dd,ee'declare @sql varchar(8000) select @sql='' select @sql=@sql+' union select '''+replace(rtrim(ltrim(Pro)),',',''' union select ''')+'''' from #TMP select @sql=stuff(@sql,1,6,'') select @sql=stuff(@sql,charindex('union',@sql)-1,0,' as Pro') select @sql='select a.Pro from ('+@sql+') a ' exec(@sql)b)、 select substring(@s,4,10)c)、 select len(@s)-charindex(',',reverse(@s))+1
set @s=' aaa,bb,cc,dd,ee'--以‘,’作为分隔,把个部分取出来
select identity(int,1,1) id,@s [str] into # from syscolumns a,syscolumns bselect substring([str],id,charindex(',',','+[str]+',',id+1)-id-1)
from # where substring(','+[str],id,1)=','drop table #/*
--------------------
aaa
bb
cc
dd
ee(所影响的行数为 5 行)
*/
--取出第4字符到第10字符间的字符串
select substring(@s,4,10)/*
--------------------
aa,bb,cc,d(所影响的行数为 1 行)
*/--取出‘,’最后一次出现的位置,并打印出来
select len(@s)-charindex(',',reverse(@s))+1/*
-----------
15(所影响的行数为 1 行)
*/
DECLARE @LINID VARCHAR(30)
set @s=' aaa,bb,cc,dd,ee'
DECLARE @I_WEIZHI int
SET @I_WEIZHI=charindex(',',@S)
--以‘,’作为分隔,把个部分取出来
WHILE (@I_WEIZHI)>0
BEGIN
SELECT @LINID=left(@S,(@I_WEIZHI-1))
SET @LINID=LTRIM(@LINID)
SELECT @LINID
SET @S=SUBSTRING(@S,(@I_WEIZHI+1),(LEN(@S)-@I_WEIZHI))
SET @I_WEIZHI=charindex(',',@S)
END
declare @s varchar(20)
declare @T varchar(20)
declare @i int
set @i=1
set @s=' aaa,bb,cc,dd,ee'
set @s=ltrim(@s)
while @i<=4
begin
insert # select left(@s,CHARINDEX(',',@s)-1)
set @s=right(@s,len(@s)-CHARINDEX(',',@s))
set @i =@i +1
end
select * from #
create table #TMP(Pro varchar(100))
insert into #TMP select ' aaa,bb,cc,dd,ee'declare @sql varchar(8000)
select @sql=''
select @sql=@sql+' union select '''+replace(rtrim(ltrim(Pro)),',',''' union select ''')+'''' from #TMP
select @sql=stuff(@sql,1,6,'')
select @sql=stuff(@sql,charindex('union',@sql)-1,0,' as Pro')
select @sql='select a.Pro from ('+@sql+') a '
exec(@sql)b)、
select substring(@s,4,10)c)、
select len(@s)-charindex(',',reverse(@s))+1