Funciones usadas en secuencias: empty
Se aplica a:SQL Server
Devuelve True si el valor de $arg es una secuencia vacía. De lo contrario, la función devuelve False.
Sintaxis
fn:empty($arg as item()*) as xs:boolean
Argumentos
$arg
Secuencia de elementos. Si la secuencia está vacía, la función devuelve True. De lo contrario, la función devuelve False.
Comentarios
No se admite la función fn:exists(). Como alternativa, se puede usar la función not().
Ejemplos
En este tema se proporcionan ejemplos de XQuery en instancias XML que se almacenan en varias columnas de tipo xml en la base de datos AdventureWorks.
A. Utilizar la función empty() de XQuery para determinar si un atributo está presente
En el proceso de fabricación de Product Model 7, esta consulta devuelve todas las ubicaciones del centro de trabajo que no tienen un atributo 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
El resultado es el siguiente:
ProductModelID Result
-------------- ------------------------------------------
7 <Location LocationID="30" LaborHrs="1"/>
<Location LocationID="50" LaborHrs="3"/>
<Location LocationID="60" LaborHrs="4"/>
La siguiente consulta, ligeramente modificada, devuelve "NotFound" si el atributo MachineHour no está 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
El resultado es el siguiente:
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"/>
Consulte también
Funciones de XQuery con el tipo de datos xml
exist() (método del tipo de datos xml)