Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Ze zadaného vstupu vytvářejí funkce konstruktoru instance libovolného předdefinovaného nebo uživatelem definovaného atomických typů XSD.
Syntax
TYP($atomicvalue as xdt:anyAtomicType?
) as TYP?
Argumenty
$strval
Řetězec, který bude převeden.
typ
Libovolný integrovaný typ XSD.
Poznámky
Konstruktory jsou podporovány pro základní a odvozené atomické typy XSD. Podtypy xs:duration, které zahrnují xdt:yearMonthDuration a xdt:dayTimeDurationa xs:QName, xs:NMTOKENa xs:NOTATION nejsou podporované. K dispozici jsou také uživatelem definované atomické typy, které jsou k dispozici v přidružených kolekcích schémat, za předpokladu, že jsou přímo nebo nepřímo odvozeny z následujících typů.
Podporované základní typy
Toto jsou podporované základní typy:
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
Podporované odvozené typy
Toto jsou podporované odvozené typy:
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 také podporuje konstantní posouvání pro vyvolání stavebních funkcí následujícími způsoby:
Pokud je argument řetězcovým literálem, výraz se vyhodnotí během kompilace. Pokud hodnota nevyhovuje omezením typu, vyvolá se statická chyba.
Pokud je argument literálem jiného typu, výraz se vyhodnotí během kompilace. Pokud hodnota nevyhovuje omezením typu, vrátí se prázdná sekvence.
Příklady
Toto téma obsahuje příklady XQuery pro instance XML, které jsou uloženy v různých xml sloupce typu v databázi AdventureWorks.
A. Použití funkce dateTime() XQuery k načtení starších popisů produktů
V tomto příkladu je ukázkový dokument XML nejprve přiřazen k proměnné typu xml. Tento dokument obsahuje tři ukázkové <ProductDescription
> prvky, přičemž každý z nich obsahuje podřízený prvek <DateCreated
>.
Proměnná se pak dotazuje, aby načetla pouze popisy produktů, které byly vytvořeny před konkrétním datem. Pro účely porovnání použije dotaz k zadání kalendářních dat funkci xs:dateTime() konstruktoru.
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] ) } )
}
')
Všimněte si následujících věcí z předchozího dotazu:
For ... Struktura smyčky WHERE se používá k načtení <ProductDescription> prvek splňující podmínku uvedenou v klauzuli WHERE.
Funkce konstruktoru dateTime() slouží k vytvoření hodnot typu dateTime, aby je bylo možné porovnat odpovídajícím způsobem.
Dotaz pak vytvoří výsledný KÓD XML. Vzhledem k tomu, že vytváříte posloupnost atributů, čárky a závorky se používají ve konstrukci XML.
Toto je výsledek:
<Product
ProductID="1"
DateCreated="2000-01-01T00:00:00Z"/>
Viz také
KONSTRUKCE XML (XQuery)
funkce XQuery proti datového typu XML