Freigeben über


Konstruktorfunktionen (XQuery)

Gilt für: SQL Server

Die Konstruktorfunktionen erstellen Instanzen beliebiger integrierter oder benutzerdefinierter atomarer XSD-Typen aus den angegebenen Eingaben.

Syntax

  
TYP($atomicvalue as xdt:anyAtomicType?  
  
) as TYP?  
  

Argumente

$strval
Zu konvertierende Zeichenfolge.

TYP
Ein beliebiger integrierter XSD-Typ.

Hinweise

Konstruktoren werden von atomaren XSD-Basistypen sowie abgeleiteten Typen unterstützt. Die Untertypen von "xs:duration", die "xdt:yearMonthDuration" und "xdt:dayTimeDuration" und "xs:QName", "xs:NMTOKEN" und "xs:NOTATION " enthalten, werden jedoch nicht unterstützt. Die benutzerdefinierten atomaren Typen, die in den damit verbundenen Schemaauflistungen verfügbar sind, stehen auch hier zur Verfügung, unter der Voraussetzung, dass sie direkt oder indirekt aus den folgenden Typen abgeleitet sind.

Unterstützte Basistypen

Es folgen die unterstützten Basistypen:

  • xs:string

  • xs:boolean

  • xs:decimal

  • xs: float

  • xs:double

  • xs:duration

  • xs:dateTime

  • xs:time

  • xs:date

  • xs:gYearMonth

  • xs:gYear

  • xs:gMonthDay

  • xs:gDay

  • xs:gMonth

  • xs:hexBinary

  • xs:base64Binary

  • xs:anyURI

Unterstützte abgeleitete Typen

Es folgen die unterstützten abgeleiteten Typen:

  • xs:normalizedString

  • xs:token

  • xs:language

  • xs:Name

  • xs:NCName

  • xs:ID

  • xs:IDREF

  • xs:ENTITY

  • xs:integer

  • xs:nonPositiveInteger

  • xs:negativeInteger

  • xs:long

  • xs:int

  • xs:short

  • xs:byte

  • xs:nonNegativeInteger

  • xs:unsignedLong

  • xs:unsignedInt

  • xs:unsignedShort

  • xs:unsignedByte

  • xs:positiveInteger

SQL Server unterstützt außerdem die Reduktion konstanter Ausdrücke beim Aufrufen von Konstruktorfunktionen unter folgenden Bedingungen:

  • Wenn das Argument ein Zeichenfolgenliteral ist, wird der Ausdruck zur Kompilierzeit ausgewertet. Wenn der Wert die Typeinschränkungen nicht erfüllt, wird ein statischer Fehler ausgelöst.

  • Wenn das Argument ein Literal eines anderen Typs ist, wird der Ausdruck zur Kompilierzeit ausgewertet. Wenn der Wert die Typeinschränkungen nicht erfüllt, wird die leere Sequenz zurückgegeben.

Beispiele

Dieses Thema enthält XQuery-Beispiele für XML-Instanzen, die in verschiedenen XML-Typspalten in der AdventureWorks-Datenbank gespeichert sind.

A. Abrufen älterer Produktbeschreibungen mit der dateTime()-Funktion von XQuery

In diesem Beispiel wird einem XML-Beispieldokument zuerst eine XML-Typvariable zugewiesen. Dieses Dokument enthält drei Beispielelemente <ProductDescription> mit jedem Element, das ein untergeordnetes <DateCreated> Element enthält.

Die Variable wird dann abgefragt, um nur diejenigen Produktbeschreibungen abzurufen, die vor einem bestimmten Datum erstellt worden sind. Für Vergleichszwecke verwendet die Abfrage die xs:dateTime()- Konstruktorfunktion, um die Datumsangaben einzugeben.

declare @x xml  
set @x = '<root>  
<ProductDescription ProductID="1" >  
  <DateCreated DateValue="2000-01-01T00:00:00Z" />  
  <Summary>Some Summary description</Summary>  
</ProductDescription>  
<ProductDescription  ProductID="2" >  
  <DateCreated DateValue="2001-01-01T00:00:00Z" />  
  <Summary>Some Summary description</Summary>  
</ProductDescription>  
<ProductDescription ProductID="3" >  
  <DateCreated DateValue="2002-01-01T00:00:00Z" />  
  <Summary>Some Summary description</Summary>  
</ProductDescription>  
</root>'  
  
select @x.query('  
     for $PD in  /root/ProductDescription  
     where xs:dateTime(data( ($PD/DateCreated/@DateValue)[1] )) < xs:dateTime("2001-01-01T00:00:00Z")  
     return  
        element Product  
       {   
        ( attribute ProductID { data($PD/@ProductID ) },  
        attribute DateCreated { data( ($PD/DateCreated/@DateValue)[1] ) } )  
        }  
 ')  

Beachten Sie hinsichtlich der vorherigen Abfrage Folgendes:

  • Die FOR ... DIE WHERE-Schleifenstruktur wird verwendet, um das ProductDescription-Element> abzurufen, das <die in der WHERE-Klausel angegebene Bedingung erfüllt.

  • Die dateTime()-Konstruktorfunktion wird verwendet, um dateTime-Typwerte zu erstellen, damit sie entsprechend verglichen werden können.

  • Anschließend konstruiert die Abfrage die resultierende XML-Ausgabe: Nachdem dabei eine Reihe von Attributen konstruiert wird, werden in der XML-Konstruktion Kommas und Klammern verwendet.

Dies ist das Ergebnis:

<Product   
   ProductID="1"   
   DateCreated="2000-01-01T00:00:00Z"/>  

Weitere Informationen

XML Construction (XQuery) (XML-Konstruktion (XQuery))
XQuery Functions against the xml Data Type (XQuery-Funktionen für den xml-Datentyp)