Bagikan melalui


Fungsi pada Nilai String - substring

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>  
...  

Lihat Juga

Fungsi XQuery terhadap Tipe Data xml