Udostępnij przez


Funkcja puste (XQuery)

Zwraca wartość True, jeśli wartość parametru $arg jest sekwencją pustą.W przeciwnym razie funkcja zwraca wartość False.

fn:empty($arg as item()*) as xs:boolean

Argumenty

  • $arg
    Sekwencja elementów.Jeśli sekwencja jest pusta, funkcja zwraca wartość True.W przeciwnym razie funkcja zwraca wartość False.

Remarks

Funkcja fn:exists() jest nieobsługiwana.Zamiast niej można użyć fukcji not().

Przykłady

This topic provides XQuery examples against XML instances that are stored in various xml type columns in the AdventureWorks database.For an overview of each of these columns, see xml Data Type Representation in the AdventureWorks Database.

A.Za pomocą funkcja XQuery substring() pobrać częściowe opisy podsumowania modelu produktu

In the manufacturing process for Product Model 7, this query returns all the work center locations that do not have a MachineHours attribute.

SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
     for $i in /AWMI:root/AWMI:Location[empty(@MachineHours)]
     return
       <Location
            LocationID="{ ($i/@LocationID) }"
            LaborHrs="{ ($i/@LaborHours) }" >
            { 
              $i/@MachineHours
            }  
       </Location>
') as Result
FROM Production.ProductModel
where ProductModelID=7

To jest wynik:

ProductModelID      Result        
-------------- ------------------------------------------
7              <Location LocationID="30" LaborHrs="1"/>
               <Location LocationID="50" LaborHrs="3"/>
               <Location LocationID="60" LaborHrs="4"/>

Następująca, nieco zmodyfikowana, kwerenda zwraca komunikat „NotFound”, jeśli brakuje atrybutu MachineHour.

SELECT ProductModelID, Instructions.query('
declare namespace p14="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
     for $i in /p14:root/p14:Location
     return
       <Location
            LocationID="{ ($i/@LocationID) }"
            LaborHrs="{ ($i/@LaborHours) }" >
            { 
                 if (empty($i/@MachineHours)) then
                    attribute MachineHours { "NotFound" }
                 else
                    attribute MachineHours { data($i/@MachineHours) }
            }  
       </Location>
') as Result
FROM Production.ProductModel
where ProductModelID=7

To jest wynik:

ProductModelID Result                       
-------------- -----------------------------------
7              
  <Location LocationID="10" LaborHrs="2.5" MachineHours="3"/>
  <Location LocationID="20" LaborHrs="1.75" MachineHours="2"/>
  <Location LocationID="30" LaborHrs="1" MachineHours="NotFound"/>
  <Location LocationID="45" LaborHrs="0.5" MachineHours="0.65"/>
  <Location LocationID="50" LaborHrs="3" MachineHours="NotFound"/>
  <Location LocationID="60" LaborHrs="4" MachineHours="NotFound"/>