Share via


Constructorfuncties (XQuery)

van toepassing op:SQL Server-

Vanuit een opgegeven invoer maken de constructorfuncties exemplaren van een van de ingebouwde XSD- of door de gebruiker gedefinieerde atomische typen.

Syntaxis

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

Argumenten

$strval
Tekenreeks die wordt geconverteerd.

TYP-
Elk ingebouwd XSD-type.

Opmerkingen

Constructors worden ondersteund voor basis- en afgeleide atomische XSD-typen. De subtypen van xs:duration, waaronder xdt:yearMonthDuration en xdt:dayTimeDuration, en xs:QName, xs:NMTOKENen xs:NOTATION worden niet ondersteund. Door de gebruiker gedefinieerde atomische typen die beschikbaar zijn in de bijbehorende schemaverzamelingen zijn ook beschikbaar, mits ze direct of indirect zijn afgeleid van de volgende typen.

Ondersteunde basistypen

Dit zijn de ondersteunde 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

Ondersteunde afgeleide typen

Dit zijn de ondersteunde afgeleide 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 biedt ook ondersteuning voor constant vouwen voor aanroepen van bouwfuncties op de volgende manieren:

  • Als het argument een letterlijke tekenreeks is, wordt de expressie geëvalueerd tijdens de compilatie. Wanneer de waarde niet voldoet aan de typebeperkingen, wordt er een statische fout gegenereerd.

  • Als het argument een letterlijke waarde van een ander type is, wordt de expressie geëvalueerd tijdens de compilatie. Wanneer de waarde niet voldoet aan de typebeperkingen, wordt de lege reeks geretourneerd.

Voorbeelden

Dit onderwerp bevat XQuery-voorbeelden voor XML-exemplaren die zijn opgeslagen in verschillende xml--typekolommen in de AdventureWorks-database.

Een. De functie dateTime() XQuery gebruiken om oudere productbeschrijvingen op te halen

In dit voorbeeld wordt eerst een XML-voorbeelddocument toegewezen aan een xml- typevariabele. Dit document bevat drie voorbeeldelementen <ProductDescription>, waarbij elk element een <DateCreated> onderliggend element bevat.

De variabele wordt vervolgens opgevraagd om alleen de productbeschrijvingen op te halen die vóór een specifieke datum zijn gemaakt. Ter vergelijking gebruikt de query de xs:dateTime() constructorfunctie om de datums te typen.

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] ) } )  
        }  
 ')  

Let op het volgende uit de vorige query:

  • De FOR ... WHERE-lusstructuur wordt gebruikt voor het ophalen van de <ProductDescription> element dat voldoet aan de voorwaarde die is opgegeven in de WHERE-component.

  • De dateTime() constructorfunctie wordt gebruikt om datum/tijd- typewaarden te maken, zodat ze op de juiste manier kunnen worden vergeleken.

  • De query maakt vervolgens de resulterende XML. Omdat u een reeks kenmerken samenstelt, worden komma's en haakjes gebruikt in de XML-constructie.

Dit is het resultaat:

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

Zie ook

XML-constructie (XQuery)
XQuery-functies op basis van het xml-gegevenstype