-- 创建地区表
CREATE TABLE dbo.Districts
(
DistrictID INT NOT NULL, /*地区编号*/
Name NVARCHAR(255) NOT NULL, /*地区名称*/
RootDistrictID INT /*根级地区编号*/
);
GO
---地区查询
DECLARE @DistrictList varchar(8000)='',@DistrictID int
set @DistrictID=140000
; WITH A AS
(
SELECT DistrictID,RootDistrictID
FROM dbo.Districts D WHERE DistrictID = @DistrictID
UNION ALL
SELECT d.DistrictID,D.RootDistrictID
FROM dbo.Districts D JOIN A ON D.RootDistrictID = A.DistrictID
WHERE D.RootDistrictID IS NOT NULL
)
--select * from A;
SELECT @DistrictList = @DistrictList+CAST ( DistrictID AS VARCHAR)+',' FROM A;
select @DistrictList
SET @DistrictList = LEFT(@DistrictList,LEN(@DistrictList)-1) ---Left 截取= SUBSTRING 截取
--(SET @DistrictList = SUBSTRING(@DistrictList, 0,LEN(@DistrictList)-1))
---这一步结果:140000,
select @DistrictList
--- 结果:140000