Fungsi Konstruktor (XQuery)
Berlaku untuk:SQL Server
Dari input tertentu, fungsi konstruktor membuat instans dari salah satu jenis atom XSD bawaan atau yang ditentukan pengguna.
Sintaks
TYP($atomicvalue as xdt:anyAtomicType?
) as TYP?
Argumen
$strval
String yang akan dikonversi.
TYP
Jenis XSD bawaan apa pun.
Keterangan
Konstruktor didukung untuk jenis XSD atom dasar dan turunan. Namun, subjenis xs:duration, yang mencakup xdt:yearMonthDuration dan xdt:dayTimeDuration, dan xs:QName, xs:NMTOKEN, dan xs:NOTATION tidak didukung. Jenis atom yang ditentukan pengguna yang tersedia dalam koleksi skema terkait juga tersedia, asalkan secara langsung atau tidak langsung berasal dari jenis berikut.
Jenis Dasar yang Didukung
Ini adalah jenis dasar yang didukung:
xs:string
xs:boolean
xs:decimal
xs:float
xs:double
xs:duration
xs:dateTime
xs:waktu
xs:date
xs:gYearMonth
xs:gYear
xs:gMonthDay
xs:gDay
xs:gMonth
xs:hexBinary
xs:base64Binary
xs:anyURI
Jenis Turunan yang Didukung
Ini adalah jenis turunan yang didukung:
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 juga mendukung pelipatan konstan untuk pemanggilan fungsi konstruksi dengan cara berikut:
Jika argumen adalah string literal, ekspresi akan dievaluasi selama kompilasi. Ketika nilai tidak memenuhi batasan jenis, kesalahan statis dimunculkan.
Jika argumen adalah harfiah dari jenis lain, ekspresi akan dievaluasi selama kompilasi. Ketika nilai tidak memenuhi batasan jenis, urutan kosong dikembalikan.
Contoh
Topik ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml di database AdventureWorks.
J. Menggunakan fungsi dateTime() XQuery untuk mengambil deskripsi produk yang lebih lama
Dalam contoh ini, contoh dokumen XML pertama kali ditetapkan ke variabel jenis xml . Dokumen ini berisi tiga elemen sampel<ProductDescription
>, dengan masing-masing elemen yang berisi elemen turunan.<DateCreated
>
Variabel kemudian dikueri untuk hanya mengambil deskripsi produk yang dibuat sebelum tanggal tertentu. Untuk tujuan perbandingan, kueri menggunakan fungsi konstruktor xs:dateTime() untuk mengetik tanggal.
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] ) } )
}
')
Perhatikan hal berikut ini dari kueri sebelumnya:
UNTUK ... Struktur perulangan WHERE digunakan untuk mengambil <elemen ProductDescription> yang memenuhi kondisi yang ditentukan dalam klausa WHERE.
Fungsi konstruktor dateTime() digunakan untuk membuat nilai jenis dateTime sehingga dapat dibandingkan dengan tepat.
Kueri kemudian membuat XML yang dihasilkan. Karena Anda membuat urutan atribut, koma dan tanda kurung digunakan dalam konstruksi XML.
Ini adalah hasilnya:
<Product
ProductID="1"
DateCreated="2000-01-01T00:00:00Z"/>
Lihat Juga
Konstruksi XML (XQuery)
Fungsi XQuery terhadap Tipe Data xml
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk