Partager via


Fonctions sur les séquences : empty

S’applique à :SQL Server

Retourne true si la valeur de $arg est une séquence vide. Sinon, cette fonction renvoie la valeur False.

Syntaxe

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

Arguments

$arg
Séquence d'éléments. Si la séquence est vide, la fonction renvoie la valeur True. Sinon, cette fonction renvoie la valeur False.

Remarques

La fonction fn:exists() n’est pas prise en charge. Vous pouvez également utiliser la fonction not().

Exemples

Cette rubrique fournit des exemples XQuery par rapport aux instances XML stockées dans différentes colonnes de type XML dans la base de données AdventureWorks.

R. Utilisation de la fonction XQuery empty() pour déterminer la présence d'un attribut

Dans le processus de fabrication du modèle de produit 7, cette requête retourne tous les emplacements du centre de travail qui n’ont pas d’attribut 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  

Voici le résultat obtenu :

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

La requête suivante, légèrement modifiée, retourne « NotFound » si l’attribut MachineHour n’est pas présent :

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  

Voici le résultat obtenu :

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

Voir aussi

Fonctions XQuery impliquant le type de données xml
Méthode exist() (type de données xml)