Bagikan melalui


Fungsi Aksesor Data - string (XQuery)

Berlaku untuk:SQL Server

Mengembalikan nilai $arg yang direpresentasikan sebagai string.

Sintaks

fn:string() as xs:string
fn:string($arg as item()?) as xs:string

Argumen

$arg

Simpul atau nilai atomik.

Keterangan

  • Jika $arg adalah urutan kosong, string panjang nol dikembalikan.

  • Jika $arg adalah simpul, fungsi mengembalikan nilai string dari simpul yang diperoleh dengan menggunakan aksesor nilai string. Ini didefinisikan dalam spesifikasi Model Data W3C XQuery 1.0 dan XPath 2.0.

  • Jika $arg adalah nilai atomik, fungsi mengembalikan string yang sama yang dikembalikan oleh ekspresi yang ditransmisikan sebagai xs:string, $arg, kecuali jika dicatat sebaliknya.

  • Jika jenis $arg adalah xs:anyURI, URI dikonversi menjadi string tanpa melarikan diri dari karakter khusus.

  • Dalam implementasi ini, fn:string() tanpa argumen hanya dapat digunakan dalam konteks predikat tergantung konteks. Secara khusus, itu hanya dapat digunakan di dalam tanda kurung ([ ]).

Contoh

Artikel ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml di database AdventureWorks.

J. Menggunakan fungsi string

Kueri berikut mengambil simpul <Features> elemen turunan dari <ProductDescription> elemen .

SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
 /PD:ProductDescription/PD:Features
')
FROM Production.ProductModel
WHERE ProductModelID = 19;

Berikut hasil parsialnya:

<PD:Features xmlns:PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
   These are the product highlights.
   <p1:Warranty xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain">
    <p1:WarrantyPeriod>3 years</p1:WarrantyPeriod>
    <p1:Description>parts and labor</p1:Description>
   </p1:Warranty>
       ...
</PD:Features>

Jika Anda menentukan string() fungsi , Anda menerima nilai string dari simpul yang ditentukan.

SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
 string(/PD:ProductDescription[1]/PD:Features[1])
')
FROM Production.ProductModel
WHERE ProductModelID = 19;

Berikut hasil parsialnya.

These are the product highlights.
3 yearsparts and labor...

B. Menggunakan fungsi string pada berbagai simpul

Dalam contoh berikut, instans XML ditetapkan ke variabel jenis xml. Kueri ditentukan untuk mengilustrasikan hasil penerapan string() ke berbagai simpul.

DECLARE @x AS XML;

SET @x = '<?xml version="1.0" encoding="UTF-8" ?>
<!--  This is a comment -->
<root>
  <a>10</a>
just text
  <b attr="x">20</b>
</root>
';

Kueri berikut mengambil nilai string dari simpul dokumen. Nilai ini dibentuk dengan menggabungkan nilai string dari semua simpul teks turunannya.

SELECT @x.query('string(/)');

Berikut hasilnya:

This is a comment 10
just text
 20

Kueri berikut mencoba mengambil nilai string dari simpul instruksi pemrosesan. Hasilnya adalah urutan kosong, karena tidak berisi simpul teks.

SELECT @x.query('string(/processing-instruction()[1])');

Kueri berikut mengambil nilai string dari simpul komentar dan mengembalikan simpul teks.

SELECT @x.query('string(/comment()[1])');

Berikut hasilnya:

This is a comment