34,591
社区成员
发帖
与我相关
我的任务
分享
DECLARE @str NVARCHAR(100);
SELECT @str = STUFF(( SELECT ',' + parama
FROM testlog
WHERE id = 1
FOR
XML PATH('')
), 1, 1, '');
SELECT dbo.getmess(@str, 3);
USE tempdb
GO
IF OBJECT_ID('getmess') IS NOT NULL
DROP FUNCTION getmess
GO
CREATE function getmess(@para varchar(1000),@seekindex int)
returns varchar(50)
as
begin
declare @index int,@temp varchar(1000),@i int
set @i=1
while @i<=@seekindex
begin
set @index=CHARINDEX(',',@para)
set @i=@i+1
set @temp=SUBSTRING(@para,@index+1,LEN(@para)-@index+1)
set @para=@temp
end
return @temp
END
GO
if OBJECT_ID('testlog') is not null drop table testlog
create table testlog(id int,parama varchar(1000),createdate date default getdate())
insert into testlog values(1,'a,dd,cc,eee,tttt,ooo,,,d','2047-12-01')
select *,dbo.getmess(parama,3) as funValue from testlog where id=1
/*
id parama createdate funValue
1 a,dd,cc,eee,tttt,ooo,,,d 2047-12-01 eee,tttt,ooo,,,d
*/
use
testok
go
alter function getmess(@para varchar(1000),@seekindex int)
returns varchar(50)
as
begin
declare @index int,@temp varchar(1000),@i int
set @i=1
while @i<=@seekindex
begin
set @index=CHARINDEX(',',@para)
set @i=@i+1
set @temp=SUBSTRING(@para,@index+1,LEN(@para)-@index+1)
set @para=@temp
end
return @temp
end
DECLARE @para varchar(1000)
Select @para=parama from testlog
select dbo.getmess(@Para,3)