Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Mengembalikan bagian dari nilai $sourceString, dimulai pada posisi yang ditunjukkan oleh nilai $startingLoc, dan melanjutkan untuk jumlah karakter yang ditunjukkan oleh nilai $length.
Sintaks
fn:substring($sourceString as xs:string?,
$startingLoc as xs:decimal?) as xs:string?
fn:substring($sourceString as xs:string?,
$startingLoc as xs:decimal?,
$length as xs:decimal?) as xs:string?
Argumen
$sourceString
String sumber.
$startingLoc
Titik awal dalam string sumber tempat substring dimulai. Jika nilai ini negatif atau 0, hanya karakter dalam posisi yang lebih besar dari nol yang dikembalikan. Jika lebih besar dari panjang $sourceString, string panjang nol akan dikembalikan.
$length
[opsional] Jumlah karakter yang akan diambil. Jika tidak ditentukan, karakter mengembalikan semua karakter dari lokasi yang ditentukan dalam $startingLoc hingga akhir string.
Keterangan
Versi tiga argumen fungsi mengembalikan karakter yang $sourceString posisinya $p mematuhi:
fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)
Nilai $length bisa lebih besar dari jumlah karakter dalam nilai $sourceString mengikuti posisi mulai. Dalam hal ini, substring mengembalikan karakter hingga akhir $sourceString.
Karakter pertama string terletak pada posisi 1.
Jika nilai $sourceString adalah urutan kosong, nilai tersebut ditangani sebagai string panjang nol. Jika tidak, jika $startingLoc atau $length adalah urutan kosong, urutan kosong dikembalikan.
Karakter Tambahan (Pasangan Pengganti)
Perilaku pasangan pengganti dalam fungsi XQuery tergantung pada tingkat kompatibilitas database dan, dalam beberapa kasus, pada URI namespace default untuk fungsi. Untuk informasi selengkapnya, lihat bagian "XQuery Functions Are Surrogate-Aware" dalam topik Melanggar Perubahan pada Fitur Mesin Database di SQL Server 2016. Lihat juga ALTER DATABASE Compatibility Level (Transact-SQL) dan Collation and Unicode Support.
Batasan Implementasi
SQL Server mengharuskan parameter $startingLoc dan $length berjenis xs:desimal, bukan xs:double.
SQL Server memungkinkan $startingLoc dan $length menjadi urutan kosong, karena urutan kosong adalah nilai yang mungkin sebagai akibat dari kesalahan dinamis yang dipetakan ke ().
Contoh
Topik ini menyediakan contoh XQuery terhadap instans XML yang disimpan di berbagai kolom jenis xml dalam AdventureWorks2025 database.
J. Menggunakan fungsi XQuery substring() untuk mengambil deskripsi model produk ringkasan parsial
Kueri mengambil 50 karakter pertama teks yang menjelaskan model produk, <Summary> elemen dalam dokumen.
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
<Prod>{ substring(string((/pd:ProductDescription/pd:Summary)[1]), 1, 50) }</Prod>
') as Result
FROM Production.ProductModel
where CatalogDescription.exist('/pd:ProductDescription') = 1;
Perhatikan hal berikut ini dari kueri sebelumnya:
Fungsi string() mengembalikan nilai string elemen<
Summary> . Fungsi ini digunakan, karena <Summary> elemen berisi teks dan subelemen (elemen pemformatan html), dan karena Anda akan melewati elemen-elemen ini dan mengambil semua teks.Fungsi substring() mengambil 50 karakter pertama dari nilai string yang diambil oleh string().
Ini adalah hasil parsial:
ProductModelID Result
-------------- ----------------------------------------------------
19 <Prod>Our top-of-the-line competition mountain bike.</Prod>
23 <Prod>Suitable for any type of riding, on or off-roa</Prod>
...