Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Zwraca wartość True, jeśli wartość $arg jest pustą sekwencją. W przeciwnym razie funkcja zwraca wartość False.
Składnia
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.
Uwagi
Funkcja fn:exists() nie jest obsługiwana. Alternatywnie można użyć funkcji not().
Przykłady
Ten temat zawiera przykłady zapytań XQuery dla wystąpień XML przechowywanych w różnych kolumnach xml typów w bazie danych AdventureWorks.
A. Używanie funkcji empty() XQuery w celu określenia, czy atrybut jest obecny
W procesie produkcyjnym modelu produktu 7 to zapytanie zwraca wszystkie lokalizacje centrum pracy, które nie mają atrybutu 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
Jest to wynik:
ProductModelID Result
-------------- ------------------------------------------
7 <Location LocationID="30" LaborHrs="1"/>
<Location LocationID="50" LaborHrs="3"/>
<Location LocationID="60" LaborHrs="4"/>
Następujące, nieco zmodyfikowane zapytanie zwraca wartość "NotFound", jeśli atrybut MachineHour nie jest obecny:
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
Jest to 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"/>
Zobacz też
funkcji XQuery względem typu danych XML
exist(), metoda (typ danych xml)