Share via


min-Funktion (XQuery)

Gibt aus einer Sequenz atomarer Werte $arg zurück, das eine Element, dessen Wert kleiner als der Wert aller anderen Elemente ist.

Syntax

fn:min($arg as xdt:anyAtomicType*) as xdt:anyAtomicType?

Argumente

  • $arg
    Sequenz der Elemente, aus denen der Mindestwert zurückgegeben wird.

Hinweise

Alle Typen der atomaren Werte, die an min() übergeben werden, müssen Untertypen des gleichen Basistyps sein. Basistypen, die angenommen werden, sind die Typen die den gt-Vorgang unterstützen. Diese Typen sind z. B. die drei integrierten numerischen Basistypen, die date/time-Basistypen, xs:string, xs:boolean und xdt:untypedAtomic. Werte des Typs xdt:untypedAtomic werden in xs:double umgewandelt. Wenn eine Mischung dieser Typen vorliegt oder andere Werte anderer Typen übergeben werden, wird ein statischer Fehler ausgelöst.

Das Ergebnis von min() erhält den Basistyp der übergebenen Typen, z. B. xs:double im Fall von xdt:untypedAtomic. Wenn die Eingabe statisch leer ist, wird dies angegeben und ein statischer Fehler zurückgegeben.

Die min()-Funktion gibt den einen Wert in der Sequenz zurück, der kleiner als alle anderen Werte in der Eingabesequenz ist. Für xs:string-Werte wird die Unicode-Codepunkt-Standardsortierung verwendet. Wenn ein xdt:untypedAtomic-Wert nicht in xs:double umgewandelt werden kann, wird der Wert in der Eingabesequenz $arg ignoriert. Wenn die Eingabe eine dynamisch berechnete leere Sequenz ist, wird die leere Sequenz zurückgegeben.

Beispiele

Dieses Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten des xml-Typs in der AdventureWorks-Datenbank gespeichert werden. Einen Überblick über diese Spalten finden Sie unter Darstellung des xml-Datentyps in der AdventureWorks-Datenbank.

A. Verwenden der min()-Funktion von XQuery zum Bestimmen der Arbeitsplatzstandorte, die die wenigsten Arbeitsstunden aufweisen

Die folgende Abfrage ruft alle Arbeitsplatzstandorte im Fertigungsprozess für das Produktmodell (ProductModelID=7) ab, die die wenigsten Arbeitsstunden aufweisen. Im Allgemeinen wird, wie im folgenden Beispiel gezeigt, ein einziger Arbeitsplatzstandort zurückgegeben. Wenn mehrere Standorte eine gleiche Anzahl von Mindestarbeitsstunden aufweisen, werden alle diese Standorte zurückgegeben.

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

Beachten Sie hinsichtlich der vorherigen Abfrage Folgendes:

  • Das namespace-Schlüsselwort im XQuery-Prolog definiert ein Namespacepräfix. Dieses Präfix wird anschließend im XQuery-Abfragetext verwendet.

Der XQuery-Abfragetext erstellt das XML, das ein <Location>-Element mit WCID- und LaborHrs-Attributen besitzt.

  • Die Abfrage ruft außerdem die ProductModelID- und Namenswerte ab.

Dies ist das Ergebnis:

ProductModelID   Name              Result
---------------  ----------------  ---------------------------------
7                HL Touring Frame  <Location WCID="45" LaborHrs="0.5"/> 

Implementierungseinschränkungen

Die folgenden Einschränkungen sind zu beachten:

  • Die min()-Funktion ordnet alle ganzzahligen Werte xs:decimal zu.

  • Die min()-Funktion wird für Werte des Typs xs:duration nicht unterstützt.

  • Sequenzen, die Typen über Basistypbegrenzungen hinweg mischen, werden nicht unterstützt.

  • Die Option syntactic, die eine Sortierung bereitstellt, wird nicht unterstützt.