다음을 통해 공유


노드의 함수 - 로컬 이름

적용 대상:SQL Server

$arg 이름의 로컬 부분을 길이가 0인 문자열이거나 xs:NCName의 어휘 형식을 갖는 xs:string으로 반환합니다. 인수가 제공되지 않으면 기본값은 컨텍스트 노드입니다.

구문

fn:local-name() as xs:string  
fn:local-name($arg as node()?) as xs:string  

인수

$arg
로컬 이름 부분을 검색할 노드 이름입니다.

설명

  • SQL Server 에서 인수가 없는 fn:local-name() 은 컨텍스트 종속 조건자의 컨텍스트에서만 사용할 수 있습니다. 특히 대괄호([ ])에서만 사용할 수 있습니다.

  • 인수가 제공되고 빈 시퀀스인 경우 함수는 길이가 0인 문자열을 반환합니다.

  • 대상 노드가 문서 노드, 주석 또는 텍스트 노드이기 때문에 이름이 없으면 함수는 길이가 0인 문자열을 반환합니다.

이 항목에서는 AdventureWorks 데이터베이스의 다양한 xml 형식 열에 저장된 XML 인스턴스에 대한 XQuery 예제를 제공합니다.

A. 특정 노드의 로컬 이름 검색

다음 쿼리는 형식화되지 않은 XML 인스턴스에 대해 지정됩니다. 쿼리 식은 local-name(/ROOT[1])지정된 노드의 로컬 이름 부분을 검색합니다.

declare @x xml  
set @x='<ROOT><a>111</a></ROOT>'  
SELECT @x.query('local-name(/ROOT[1])')  
-- result = ROOT  

다음 쿼리는 ProductModel 테이블의 형식화된 xml 열인 Instructions 열에 대해 지정됩니다. 식은 local-name(/AWMI:root[1]/AWMI:Location[1])지정된 노드의 로컬 이름을 Location반환합니다.

SELECT Instructions.query('  
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;  
     local-name(/AWMI:root[1]/AWMI:Location[1])') as Result  
FROM Production.ProductModel  
WHERE ProductModelID=7  
-- result = Location  

B. 조건자에서 인수 없이 로컬 이름 사용

다음 쿼리는 ProductModel 테이블의 Instructions 열( 형식화된 xml 열)에 대해 지정됩니다. 식은 QName의 <root> 로컬 이름 부분이 "Location"인 요소의 모든 요소 자식을 반환합니다. local-name() 함수는 조건자에서 지정되며 인수가 없습니다. 컨텍스트 노드는 함수에서 사용됩니다.

SELECT Instructions.query('  
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;  
  /AWMI:root//*[local-name() = "Location"]') as Result  
FROM Production.ProductModel  
WHERE ProductModelID=7  

쿼리는 요소의 <Location> 모든 요소 자식을 반환합니다.<root>

참고 항목

노드의 함수
namespace-uri 함수(XQuery)