又遇一问题,求解!

kart15 2010-12-31 10:04:57
有一段字符:@zd='ID,Names,banner,age'

在T-sql中如何讲上述字符替换成‘min(ID) ID,min(Names) Names,min(banner) banner,min(age) age’

注:@zd可能有很多个','

请问这个得怎么整!
...全文
70 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
飘零一叶 2010-12-31
  • 打赏
  • 举报
回复
DECLARE @zd VARCHAR(MAX),@tm VARCHAR(MAX),@r VARCHAR(MAX)
SET @zd='ID,Names,banner,age'
while CHARINDEX(',',@zd)>0
begin
set @tm=SUBSTRING(@zd,1,CHARINDEX(',',@zd)-1)
set @tm='min('+@tm+') '+@tm+''
set @r=ISNULL(@r+',','')+@tm
print @r
set @zd=STUFF(@zd,1,CHARINDEX(',',@zd),'')
end
set @zd='min('+@zd+') '+@zd+''
select @r+','+@zd
-----------------
(无列名)
min(ID) ID,min(Names) Names,min(banner) banner,min(age) age

AcHerat 2010-12-31
  • 打赏
  • 举报
回复

create function f_str(@str varchar(1000))
returns varchar(1000)
as
begin
declare @s1 varchar(1000)
declare @s2 varchar(1000)
declare @id int
set @s1 = @str + ','
set @id = charindex(',',@s1)
set @s2 = ''
while(len(@s1)>0)
begin
set @s2 = @s2 + 'min('+substring(@s1,1,@id-1)+') '+substring(@s1,1,@id-1)+','
set @s1 = substring(@s1,@id+1,len(@s1))
set @id = charindex(',',@s1)
end
set @s2 = stuff(@s2,len(@s2),1,'')
return @s2
end
go

select dbo.f_str('id,ic,ar,aga')lie

drop function f_str

lie
------------------------------------------------------
min(id) id,min(ic) ic,min(ar) ar,min(aga) aga

(1 行受影响)
AcHerat 2010-12-31
  • 打赏
  • 举报
回复

create function f_str(@str varchar(1000))
returns varchar(1000)
as
begin
declare @s1 varchar(1000)
declare @s2 varchar(1000)
declare @id int
set @s1 = @str + ','
set @id = charindex(',',@s1)
set @s2 = ''
while(len(@s1)>0)
begin
set @s2 = @s2 + 'min('+substring(@s1,1,@id-1)+')'+','
set @s1 = substring(@s1,@id+1,len(@s1))
set @id = charindex(',',@s1)
end
set @s2 = stuff(@s2,len(@s2),1,'')
return @s2
end
go

select dbo.f_str('id,ic,ar,aga')lie

drop function f_str

lie
--------------------------------------------
min(id),min(ic),min(ar),min(aga)
kart15 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dlut_liuq 的回复:]
SQL code
DECLARE @zd VARCHAR(MAX)
SET @zd=','+'ID,Names,banner,age'+','
SET @zd=REPLACE(@zd,',ID,',',MIN(ID),')
..............
..............
[/Quote]
问题是不知道是否是ID,Names...
在c#中利用循环来做,我想这里应该也得用循环吧!

但T-sql语句不熟悉,请赐教
飘零一叶 2010-12-31
  • 打赏
  • 举报
回复
DECLARE @zd VARCHAR(MAX)
SET @zd=','+'ID,Names,banner,age'+','
SET @zd=REPLACE(@zd,',ID,',',MIN(ID),')
..............
..............

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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