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