부울 값 함수 - not 함수
적용 대상: SQL Server
$arg 유효 부울 값이 false이면 TRUE를 반환하고, 유효한 $arg 부울 값이 true이면 FALSE를 반환합니다.
구문
fn:not($arg as item()*) as xs:boolean
인수
$arg
유효 부울 값이 있는 항목의 시퀀스입니다.
예제
이 항목에서는 AdventureWorks 데이터베이스의 다양한 xml 형식 열에 저장된 XML 인스턴스에 대한 XQuery 예제를 제공합니다.
A. not() XQuery 함수를 사용하여 카탈로그 설명에 Specifications 요소가 포함되지 <않은 제품 모델을 찾습니다> .
다음 쿼리는 카탈로그 설명에 요소가 포함되지 않은 제품 모델에 대한 제품 모델 ID가 포함된 XML을 <Specifications
> 생성합니다.
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
<Product
ProductModelID="{ sql:column("ProductModelID") }"
/>
') as Result
FROM Production.ProductModel
WHERE CatalogDescription.exist('
/pd:ProductDescription[not(pd:Specifications/*)] '
) = 0
이전 쿼리의 다음 사항에 유의하세요:
문서에서 네임스페이스를 사용하므로 샘플에서는 WITH NAMESPACES 문을 사용합니다. 또 다른 옵션은 XQuery 프롤로그에서 네임스페이스 선언 키워드를 사용하여 접두사를 정의하는 것입니다.
그런 다음, 쿼리는 요소와 해당 ProductModelID 특성을 포함하는>
Product
< XML을 생성합니다.WHERE 절은 exist() 메서드(XML 데이터 형식)를 사용하여 행을 필터링합니다. Specification> 자식 요소가 없는 ProductDescription> 요소가 있는 <경우 exist() 메서드는 <True를 반환합니다. not() 함수를 사용합니다.
각 제품 모델 카탈로그 설명에 Specifications 요소가 포함되어 있으므로 이 결과 집합은 <비어 있습니다> .
B. not() XQuery 함수를 사용하여 MachineHours 특성이 없는 작업 센터 위치 검색
다음 쿼리는 지침 열에 대해 지정됩니다. 이 열에는 제품 모델에 대한 제조 지침이 저장됩니다.
특정 제품 모델의 경우 쿼리는 MachineHours를 지정하지 않는 작업 센터 위치를 검색합니다. 즉, Location> 요소에 대해 MachineHours 특성이 <지정되지 않았습니다.
SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
for $i in /AWMI:root/AWMI:Location[not(@MachineHours)]
return
<Location LocationID="{ $i/@LocationID }"
LaborHrs="{ $i/@LaborHours }" >
</Location>
') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
앞의 쿼리에서 다음 사항에 유의하세요.
XQuery 프롤로그의 declarenamespace는 Adventure Works 제조 지침 네임스페이스 접두사를 정의합니다. 제조 지침 문서에 사용된 동일 네임스페이스를 나타냅니다.
쿼리에서 not(@MachineHours) 조건자는 MachineHours 특성이 없으면 True를 반환합니다.
다음은 결과입니다.
ProductModelID Result
-------------- --------------------------------------------
7 <Location LocationID="30" LaborHrs="1"/>
<Location LocationID="50" LaborHrs="3"/>
<Location LocationID="60" LaborHrs="4"/>
구현 제한 사항
제한 사항은 다음과 같습니다.
- not() 함수는 xs:boolean 또는 node()*또는 빈 시퀀스 형식의 인수만 지원합니다.