34,588
社区成员
发帖
与我相关
我的任务
分享
/******************************************************************************/
/*回复:20080522001总:00043 */
/*主题:路径名称 */
/*作者:二等草 */
/******************************************************************************/
set nocount on
--数据--------------------------------------------------------------------------
create table [tb] ([bh] int,[kz01] varchar(8),[kz02] int,[kz03] varchar(10))
insert into [tb] select 1,'一级名称',0,'0'
insert into [tb] select 2,'二级名称',1,'0,1'
insert into [tb] select 3,'三级名称',2,'0,1,2'
go
--代码--------------------------------------------------------------------------
create function getn(@d varchar(10),@i int)
returns varchar(10)
as
begin
declare @j int,@s varchar(10)
if charindex(',',@d) = 0 return NULL
select @d = @d+',',@j = 1
while @j <= @i and @d <> ''
begin
select @d = right(@d,len(@d)-charindex(',',@d))
set @j = @j + 1
end
if @d ='' return null
set @d = left(@d,charindex(',',@d)-1)
select @s = kz01 from tb where bh = @d
return @s
end
go
select bh,kz01,kz02,kz03
,first = dbo.getn(kz03,1)
,second = dbo.getn(kz03,2)
,third = dbo.getn(kz03,3)
from tb a
go
/*结果--------------------------------------------------------------------------
bh kz01 kz02 kz03 first second third
----------- -------- ----------- ---------- ---------- ---------- ----------
1 一级名称 0 0 NULL NULL NULL
2 二级名称 1 0,1 一级名称 NULL NULL
3 三级名称 2 0,1,2 一级名称 二级名称 NULL
--清除------------------------------------------------------------------------*/
drop function getn
go
drop table tb