Funzione empty (XQuery)

Restituisce True se il valore di $arg è una sequenza vuota. In caso contrario, la funzione restituisce False.

Sintassi

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

Argomenti

  • $arg
    Una sequenza di elementi. Se la sequenza è vuota, la funzione restituisce True. In caso contrario, restituisce False.

Osservazioni

La funzione fn:exists() non è supportata. In alternativa, è possibile utilizzare la funzione not().

Esempi

In questo argomento vengono forniti esempi di utilizzo del linguaggio XQuery sulle istanze XML archiviate in diverse colonne di tipo xml nel database AdventureWorks2008R2. Per una panoramica su ognuna di queste colonne, vedere Rappresentazione del tipo di dati XML nel database AdventureWorks2008R2.

A. Utilizzo della funzione XQuery empty() per determinare se un attributo è presente

Nel processo di produzione del modello Product Model 7, questa query restituisce tutti i centri di lavorazione per i quali non è presente l'attributo 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[empty(@MachineHours)]
     return
       <Location
            LocationID="{ ($i/@LocationID) }"
            LaborHrs="{ ($i/@LaborHours) }" >
            { 
              $i/@MachineHours
            }  
       </Location>
') as Result
FROM Production.ProductModel
where ProductModelID=7;

Risultato:

ProductModelID Result

-------------- ------------------------------------------

7 <Location LocationID="30" LaborHrs="1"/>

<Location LocationID="50" LaborHrs="3"/>

<Location LocationID="60" LaborHrs="4"/>

La query seguente è simile alla precedente e restituisce "NotFound" se l'attributo MachineHour non è presente:

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;

Risultato:

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"/>