Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Returnerar från en sekvens med atomiska värden, $arg, det enda objekt vars värde är mindre än det för alla andra.
Syntax
fn:min($arg as xdt:anyAtomicType*) as xdt:anyAtomicType?
Argument
$arg
Sekvens med objekt som minimivärdet ska returneras från.
Anmärkningar
Alla typer av atomiserade värden som skickas till min() måste vara undertyper av samma bastyp. Bastyper som godkänns är de typer som stöder åtgärden gt. Dessa typer omfattar de tre inbyggda numeriska bastyperna, bastyperna datum/tid, xs:string, xs:boolean och xdt:untypedAtomic. Värden av typen xdt:untypedAtomic omvandlas till xs:double. Om det finns en blandning av dessa typer, eller om andra värden av andra typer skickas, utlöses ett statiskt fel.
Resultatet av min() tar emot bastypen för de skickade typerna, till exempel xs:double när det gäller xdt:untypedAtomic. Om indata är statiskt tomma är tom underförstått och ett statiskt fel returneras.
Funktionen min() returnerar det enda värdet i sekvensen som är mindre än något annat i indatasekvensen. För xs:string-värden används unicode codepoint-standardsortering. Om ett xdt:untypedAtomic-värde inte kan omvandlas till xs:double ignoreras värdet i indatasekvensen $arg. Om indata är en dynamiskt beräknad tom sekvens returneras den tomma sekvensen.
Exempel
Det här avsnittet innehåller XQuery-exempel mot XML-instanser som lagras i olika XML- typkolumner i AdventureWorks-databasen.
A. Använda XQuery-funktionen min() för att hitta den arbetsplatsplats som har minst antal arbetstimmar
Följande fråga hämtar alla arbetscenterplatser i tillverkningsprocessen för produktmodellen (ProductModelID=7) som har minst antal arbetstimmar. Som du ser i följande returneras vanligtvis en enda plats. Om flera platser hade lika många minsta arbetstimmar skulle alla returneras.
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
Observera följande från föregående fråga:
- Nyckelordet namnområde i XQuery-prologen definierar ett namnområdesprefix. Det här prefixet används sedan i XQuery-brödtexten.
XQuery-brödtexten konstruerar XML som har ett <Location>-element med WCID och LaborHrs attribut.
- Frågan hämtar också värdena ProductModelID och name.
Det här är resultatet:
ProductModelID Name Result
--------------- ---------------- ---------------------------------
7 HL Touring Frame <Location WCID="45" LaborHrs="0.5"/>
Implementeringsbegränsningar
Det här är begränsningarna:
Funktionen min() mappar alla heltal till xs:decimal.
Funktionen min() för värden av typen xs:duration stöds inte.
Sekvenser som blandar typer över bastypsgränser stöds inte.
Det syntaktiska alternativet som tillhandahåller en sortering stöds inte.