Fonctions constructeur (XQuery)
S’applique à :SQL Server
À partir d'une entrée spécifiée, les fonctions constructeur créent des instances de n'importe quel type atomique XSD intégré ou défini par l'utilisateur.
Syntaxe
TYP($atomicvalue as xdt:anyAtomicType?
) as TYP?
Arguments
$strval
Chaîne à convertir.
TYP
Tout type XSD intégré.
Remarques
Les constructeurs sont pris en charge pour les types XSD de base et dérivés. Toutefois, les sous-types de xs:duration, qui incluent xdt:yearMonthDuration et xdt:dayTimeDuration, et xs:QName, xs:NMTOKEN et xs:NOTATION ne sont pas pris en charge. Les types atomiques définis par l'utilisateur présents dans les collections de schémas associées sont également disponibles, sous réserve qu'ils soient directement ou indirectement dérivés des types ci-après.
Types de base pris en charge
Les types de base pris en charge sont les suivants :
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
Types dérivés pris en charge
Les types dérivés pris en charge sont les suivants :
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
En outre, SQL Server prend en charge l'assemblage de constantes pour les appels de fonction de construction des façons suivantes :
Si l'argument est un littéral de chaîne, l'expression est évaluée pendant la compilation. Lorsque la valeur ne satisfait pas aux contraintes de type, une erreur statique est déclenchée.
Si l'argument est un littéral d'un autre type, l'expression est évaluée pendant la compilation. Lorsque la valeur ne satisfait pas aux contraintes de type, la séquence vide est renvoyée.
Exemples
Cette rubrique fournit des exemples XQuery sur des instances XML stockées dans différentes colonnes de type xml dans la base de données AdventureWorks.
R. Utilisation de la fonction XQuery dateTime() pour extraire les anciennes descriptions de produits
Dans cet exemple, un exemple de document XML est d’abord affecté à une variable de type xml . Ce document contient trois exemples d’éléments, chacun contenant unDateCreated
><élément enfant.<ProductDescription
>
La variable est ensuite interrogée afin que ne soient extraites que les descriptions de produits créées avant une date spécifique. À des fins de comparaison, la requête utilise la fonction de constructeur xs:dateTime() pour taper les dates.
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] ) } )
}
')
Notez les points suivants dans la requête précédente :
For ... La structure de boucle WHERE est utilisée pour récupérer l’élément <ProductDescription> répondant à la condition spécifiée dans la clause WHERE.
La fonction de constructeur dateTime() est utilisée pour construire des valeurs de type dateTime afin qu’elles puissent être comparées de manière appropriée.
La requête construit ensuite le document XML obtenu. Étant donné que vous construisez une séquence d'attributs, des virgules et des parenthèses sont utilisées dans la construction XML.
Voici le résultat obtenu :
<Product
ProductID="1"
DateCreated="2000-01-01T00:00:00Z"/>
Voir aussi
Construction XML (XQuery)
Fonctions XQuery impliquant le type de données xml