2013-10-15 2 views
0

XML 요소로 열의 값을 가져 오려고합니다. SQL Server의 For XML을 사용하여이 작업을 수행 할 수 있습니까?XML 용 tsql은 값을 요소로 지정합니다.

declare @XMLTest table([Name] [nvarchar](50) NOT NULL) 

INSERT @XMLTest ([Name]) VALUES (N'One¬d¦Uº') 
INSERT @XMLTest ([Name]) VALUES (N'Two') 
INSERT @XMLTest([Name]) VALUES (N'Three') 

나는 선택 쿼리에서 별도의 행에 다음을 좀하고 싶습니다.

이렇게하면 값의 잘못된 문자를 이스케이프 처리하여 XML로 올바르게 직렬화 할 수 있습니다.

<One_x00AC_d_x00A6_U_x00BA_/> 
<Two/> 
<Three/> 

FOR XML 쿼리에서이 결과를 얻을 수 있습니까?

+0

어떤 SQL Server 버전입니까? – Szymon

+0

@Szymon SQL Server 2008 R2 – Ishpal

+0

그렇게 할 수 있다고 생각하지 않습니다. 왜이 작업을 수행할까요? 어떻게 그 후에 xml을 쿼리 할 것입니까? –

답변

1
은 여기에서 시작

: XML 형식으로

declare @XMLTest table([Name] [nvarchar](50) NOT NULL) 

INSERT @XMLTest ([Name]) VALUES (N'One') 
INSERT @XMLTest ([Name]) VALUES (N'Two') 
INSERT @XMLTest([Name]) VALUES (N'Three') 

select * from @xmltest for xml auto 

줍니다.

또는 약간의 절름 거리는 연결.

declare @XMLTest table([Name] [nvarchar](50) NOT NULL) 

INSERT @XMLTest ([Name]) VALUES (N'One') 
INSERT @XMLTest ([Name]) VALUES (N'Two') 
INSERT @XMLTest([Name]) VALUES (N'Three') 

select '<' + Name + '/>' from @xmltest 

당신의 목표가 더 명확하면 도움이 될 것입니다.

이 쿼리는 XML 항목을 사용자 지정하는 방법에 대한 자세한 지침을 제공합니다.

create table #xmltest (nID int primary key identity, [Name] [nvarchar](50) NOT NULL) 
create table #xmldemo (Tag varchar, Parent Varchar, Other Varchar); 
declare @i as int = 1; 

INSERT #XMLTest ([Name]) VALUES (N'One') 
INSERT #XMLTest ([Name]) VALUES (N'Two') 
INSERT #XMLTest([Name]) VALUES (N'Three') 

while (@i < 3) 
begin 
declare @tag as varchar(100) = '[Test!1!' + (select name from #XMLTest where nID = @i) + '!ELEMENT]'; 
declare @dsql as varchar(max) = 'select 1 as Tag, null as Parent, ''this'' as ' + @tag + ' from #xmltest for xml explicit'; 
exec(@dsql); 
set @i += 1; 
end 

select * from #xmldemo; 

drop table #xmldemo; 
drop table #xmltest; 

여기에는 약간의 내용이 있지만 관련없는 내용이지만 시도하고있는 것과 같은 것을 보여줍니다.

+0

내 게시물을 읽으면 "이 값의 잘못된 문자를 이스케이프하는 데 도움이되므로 XML로 올바르게 직렬화 할 수 있습니다. " XML 엔진을 사용하여 텍스트를 생성하면 SQL 서버는 데이터에서 유효하지 않은 문자를 제거하므로 요소 이름이 유효한 XML입니다. 당신의 접근법은 잘못된 문자를 제거하는 데 도움이되지 않는 문자열 만 연결하므로 나에게 효과적이지 않습니다. – Ishpal

+0

#XMLTest ([Name]) VALUES (N'One_d | Uº ')를 INSERT하면 잘못된 XML 요소가 생성됩니다. – Ishpal

+0

콘텐츠를 추가로 살균하려면 편집에서 언급 한대로 SO의 다른 대답과 같은 기능을 통해 처리 할 수 ​​있습니다. http://stackoverflow.com/questions/1007697/how-to-strip-all-non-alphabetic-characters-from-string-in-sql-server – ZombiePiranha80

관련 문제