Kommentar
Å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
Från en specificerad indata skapar konstruktörfunktionerna instanser av någon av de inbyggda eller användardefinierade XSD-atomtyperna.
Syntax
TYP($atomicvalue as xdt:anyAtomicType?
) as TYP?
Arguments
$strval
Sträng som kommer att konverteras.
TYP
Vilken inbyggd XSD-typ som helst.
Remarks
Konstruktorer stöds för bas- och härledda atomära XSD-typer. Dock stöds inte undertyperna av xs:duration, som inkluderar xdt:yearMonthDuration och xdt:dayTimeDuration, samt xs:QName, xs:NMTOKEN, och xs:NOTATION . Användardefinierade atomära typer som finns tillgängliga i de tillhörande schemasamlingarna finns också tillgängliga, förutsatt att de direkt eller indirekt härstammar från följande typer.
Stödda bastyper
Detta är de stödda bastyperna:
xs:string
xs:booleskt värde
xs:decimal
xs:float
xs:dubbel
xs:duration
xs:dateTime
xs:tid
xs:datum
xs:gYearMonth
xs:gYear
xs:gMånadsdag
xs:gDay
xs:gMonth
xs:hexBinary
xs:base64Binary
xs:anyURI
Stödda härledda typer
Dessa är de stödda härledda typerna:
xs:normalizedString
xs:token
xs:språk
xs:Namn
xs:NCName
xs:ID
xs:IDREF
xs:ENTITY
xs:heltal
xs:nonPositiveInteger
xs:negativeHeltal
xs:long
xs:int
xs:kort
xs:byte
xs:nonNegativeInteger
xs:unsignedLong
xs:unsignedInt
xs:unsignedShort
xs:unsignedByte
xs:positiveInteger
SQL Server stöder också konstant vikning för anrop av konstruktionsfunktioner på följande sätt:
Om argumentet är en strängbokstav kommer uttrycket att utvärderas under kompileringen. När värdet inte uppfyller typbegränsningarna uppstår ett statiskt fel.
Om argumentet är en literal av en annan typ kommer uttrycket att utvärderas under kompileringen. När värdet inte uppfyller typbegränsningarna returneras den tomma sekvensen.
Examples
Det här avsnittet innehåller XQuery-exempel mot XML-instanser som lagras i olika XML- typkolumner i AdventureWorks-databasen.
A. Att använda dateTime() XQuery-funktionen för att hämta äldre produktbeskrivningar
I detta exempel tilldelas först ett exempel på XML-dokument en xml-typvariabel . Detta dokument innehåller tre exempelelement <ProductDescription> , där varje element innehåller ett <DateCreated> barnelement.
Variabeln frågas sedan för att endast hämta de produktbeskrivningar som skapades före ett specifikt datum. För jämförelse använder frågan xs:dateTime() -konstruktörfunktionen för att skriva datumen.
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] ) } )
}
')
Observera följande från föregående fråga:
FOR ... WHERE-loopstrukturen används för att hämta <ProductDescription-elementet> som uppfyller villkoret som anges i WHERE-klausulen.
DateTime()-konstruktörfunktionen används för att konstruera dateTime-typvärden så att de kan jämföras på ett lämpligt sätt.
Frågan konstruerar sedan den resulterande XML:en. Eftersom du konstruerar en sekvens av attribut används kommatecken och parenteser i XML-konstruktionen.
Det här är resultatet:
<Product
ProductID="1"
DateCreated="2000-01-01T00:00:00Z"/>