Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Vrátí ze sekvence atomických hodnot , $arg, jednu položku, jejíž hodnota je menší než u všech ostatních.
Syntaxe
fn:min($arg as xdt:anyAtomicType*) as xdt:anyAtomicType?
Arguments
$arg
Posloupnost položek, ze kterých se má vrátit minimální hodnota
Poznámky
Všechny typy atomizovaných hodnot, které se předávají min (), musí být podtypy stejného základního typu. Základní typy, které jsou přijímány, jsou typy, které podporují operaci gt . Mezi tyto typy patří tři předdefinované číselné základní typy, základní typy data a času, xs:string, xs:boolean a xdt:untypedAtomic. Hodnoty typu xdt:untypedAtomic se přetypují na xs:double. Pokud existuje kombinace těchto typů nebo pokud jsou předány jiné hodnoty jiných typů, vyvolá se statická chyba.
Výsledkem min() je základní typ předaných v typech, například xs:double v případě xdt:untypedAtomic. Pokud je vstup staticky prázdný, je implicitní prázdný a vrátí se statická chyba.
Funkce min() vrátí jednu hodnotu v posloupnosti, která je menší než jakákoli jiná ve vstupní sekvenci. Pro hodnoty xs:string se používá výchozí kolace kódu Unicode. Pokud xdt:untypedAtomic hodnotu nelze přetypovat na xs:double, hodnota se ignoruje ve vstupní sekvenci $arg. Pokud je vstup dynamicky počítanou prázdnou sekvencí, vrátí se prázdná sekvence.
Examples
Toto téma obsahuje příklady XQuery pro instance XML, které jsou uloženy v různých sloupcích typu XML v databázi AdventureWorks.
A. Použití funkce min() XQuery k vyhledání umístění pracovního centra, které má nejmenší pracovní dobu
Následující dotaz načte všechna umístění pracovních center ve výrobním procesu modelu produktu (ProductModelID=7), které mají nejmenší pracovní dobu. Obecně platí, že se vrátí jedno umístění, jak je znázorněno na následujícím obrázku. Pokud by více míst mělo stejný počet minimálních pracovních hodin, všechny by se vrátily.
select ProductModelID, Name, Instructions.query('
declare namespace AWMI=
"https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $Location in /AWMI:root/AWMI:Location
where $Location/@LaborHours =
min( /AWMI:root/AWMI:Location/@LaborHours )
return
<Location WCID= "{ $Location/@LocationID }"
LaborHrs= "{ $Location/@LaborHours }" />
') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
Všimněte si následujících věcí z předchozího dotazu:
- Klíčové slovo oboru názvů v XQuery prolog definuje předponu oboru názvů. Tato předpona se pak použije v těle XQuery.
Tělo XQuery vytvoří XML, který má <location> element s WCID a LaborHrs atributy.
- Dotaz také načte hodnoty ProductModelID a name.
Toto je výsledek:
ProductModelID Name Result
--------------- ---------------- ---------------------------------
7 HL Touring Frame <Location WCID="45" LaborHrs="0.5"/>
Omezení implementace
Toto jsou omezení:
Funkce min() mapuje všechna celá čísla na xs:decimal.
Funkce min() pro hodnoty typu xs:duration není podporována.
Sekvence, které kombinují typy napříč hranicemi základního typu, se nepodporují.
Syntaktická možnost, která poskytuje kolaci, není podporována.