SQL递归获取所有父节点的函数

表结构和模拟数据如下:1河北省NULL2石家庄13保定14山西省NULL5太原46新华区27北焦村68大郭村69河南省NULL10大郭村南811大郭村北812北焦村东71... 表结构和模拟数据如下:1 河北省 NULL2 石家庄 13 保定 14 山西省 NULL5 太原 46 新华区 27 北焦村 68 大郭村 69 河南省 NULL10 大郭村南 811 大郭村北 812 北焦村东 713 北焦村西 714 桥东区 315 桥西区 3

输入ID:15查询这样的一个结果:河北省 /石家庄/ 桥西区
求高手解答
展开
 我来答
奔驰M888
2013-08-02 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1846
采纳率:0%
帮助的人:2708万
展开全部

*************

函数如下,请根据你自己的实际情况,把汉字换成相应的具体信息

*************

CREATE FUNCTION 函数名( @id AS varchar(2)) RETURNS varchar(1000) AS 

BEGIN

    DECLARE @tmp VARCHAR(1000)

    IF @id IS NOT NULL

    BEGIN

        SELECT @tmp=@id+','+isnull(dbo.函数名(第三列字段),'') FROM [表名] WHERE [第一列字段] = @id 

    END

    RETURN @tmp

END

***********

调用方法:

***********

SELECT substring(dbo.函数名('15'),1,len(dbo.函数名('15'))-1)

**********

给你个我测试的截图,参考

**********

---

以上,希望对你有所帮助。

匿名用户
2013-08-03
展开全部
我写了个不知道能不能帮助你数据库Sql server2000 sql语句 if exists(select name from sysobjects where name='selectAddress')
drop function selectAddress
gocreate function selectAddress(@id int)
returns varchar(100)
as
begin
declare @str varchar(100)
set @str=''
declare @num int
select @str=name from address where id=@id
if exists(select pid from address where id=@id)
begin
select @num=pid from address where id=@id
set @str=@str+'/'+[index].dbo.selectAddress(@num)
end
return @str
end
select [index].dbo.selectAddress(15) 结果(当然结果要你修正下)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-03
展开全部
如果是Oracle数据库,那么有递归函数可以实现SQL语句。Start with...connect by prior ..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-03
展开全部
看我的QQ空间,前两天刚总结的 呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式