반응형
쿼리를 하다보면 컬럼을 구분자에 연결하여 컬럼1;컬럼2;컬럼3 같은 결과를 Select 할 경우가 있습니다.
MSSQL2000에서는 변수에 그 값을 넣어서 처리하였지만 MSSQL2005 에서 for xml 문을 써서 변수 없이 처리가 가능
합니다.
다음 쿼리는 둘다 똑같은 결과를 반환합니다. 참고하세요.
use pubs
go
-- MSSQL2000 방식
declare @names varchar(8000)
select top 10 @names = coalesce(@names,'') + name + ';'
from sysobjects
where xtype = 'U'
order by name
select @names as names
names
----------------------------------------------------------------------------------
authors;discounts;employee;jobs;pub_info;publishers;roysched;sales;stores;titleauthor;
(1개 행 적용됨)
-- MSSQL2005 방식
select (select top 10 name + ';' as [text()]
from sysobjects
where xtype = 'U'
order by name for xml path('')) as names
names
----------------------------------------------------------------------------------
authors;discounts;employee;jobs;pub_info;publishers;roysched;sales;stores;titleauthor;
(1개 행 적용됨)
MSSQL2000에서는 변수에 그 값을 넣어서 처리하였지만 MSSQL2005 에서 for xml 문을 써서 변수 없이 처리가 가능
합니다.
다음 쿼리는 둘다 똑같은 결과를 반환합니다. 참고하세요.
use pubs
go
-- MSSQL2000 방식
declare @names varchar(8000)
select top 10 @names = coalesce(@names,'') + name + ';'
from sysobjects
where xtype = 'U'
order by name
select @names as names
names
----------------------------------------------------------------------------------
authors;discounts;employee;jobs;pub_info;publishers;roysched;sales;stores;titleauthor;
(1개 행 적용됨)
-- MSSQL2005 방식
select (select top 10 name + ';' as [text()]
from sysobjects
where xtype = 'U'
order by name for xml path('')) as names
names
----------------------------------------------------------------------------------
authors;discounts;employee;jobs;pub_info;publishers;roysched;sales;stores;titleauthor;
(1개 행 적용됨)
반응형