Funzioni su sequenze - empty

Si applica a: sìSQL Server (tutte le versioni supportate)

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, la funzione restituisce False.

Commenti

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

Esempio

In questo argomento vengono forniti esempi di XQuery sulle istanze XML archiviate in varie colonne di tipo xml nel database AdventureWorks.

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

Nel processo di produzione per il modello di prodotto 7, questa query restituisce tutte le località del centro di lavoro che non hanno un 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, leggermente modificata, 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"/>  

Vedere anche

Funzioni XQuery per il tipo di dati xml
Metodo exist() (tipo di dati xml)