Aracılığıyla paylaş


Dize Değerleri İşlevleri - alt dize

Şunlar için geçerlidir: SQL Server

$startingLoc değeriyle gösterilen pozisyondan başlayarak $sourceString değerinin bir kısmını döndürür ve $length değeriyle belirtilen karakter sayısına kadar devam eder.

Sözdizimi

  
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?  

Arguments

$sourceString
Kaynak dizisi.

$startingLoc
Alt dizinin başladığı kaynak dizedeki başlangıç noktası. Bu değer negatif veya 0 ise, yalnızca sıfırdan büyük konumdaki karakterler geri döner. Eğer $sourceString uzunluğundan büyükse, sıfır uzunluktaki ip geri verilir.

$length
[isteğe bağlı] Geri alınacak karakter sayısı. Belirtilmediyse, $startingLoc'de belirtilen konumdan dizinin sonuna kadar tüm karakterleri döndürür.

Açıklamalar

Fonksiyonun $sourceString$p üç argümanlı versiyonu, pozisyondaki karakterleri geri getirir:

fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)

$length değeri, başlangıç pozisyonundan sonra gelen $sourceString değerindeki karakter sayısından daha fazla olabilir. Bu durumda, alt dizi karakterleri $sourceString sonuna kadar geri döndürür.

Bir dizinin ilk karakteri 1. konumda bulunur.

Eğer $sourceString'nin değeri boş dizisi ise, sıfır uzunluklu dizi olarak ele alınır. Aksi takdirde, boş dizi $startingLoc veya $length ise, boş dizi geri döner.

Ek Karakterler (Vekil Çiftler)

XQuery fonksiyonlarındaki vekil çiftlerin davranışı, veritabanı uyumluluk seviyesine ve bazı durumlarda fonksiyonlar için varsayılan isim alanı URI'sine bağlıdır. Daha fazla bilgi için, SQL Server 2016'da Veritabanı Motoru Özelliklerindeki Değişiklikleri Kırmak başlığındaki "XQuery Fonksiyonları Taşıyıcı-Farkındadır" bölümüne bakınız. Ayrıca ALTER DATABASE Uyumluluk Seviyesi (Transact-SQL) ve Collation ile Unicode Desteği'ne bakınız.

Uygulama Sınırlamaları

SQL Server, $startingLoc ve $length parametrelerinin xs:decimal türünde olmasını ister, xs:double yerine xs:decimal türündedir.

SQL Server, $startingLoc ve $length'nin boş dizis olmasına izin verir, çünkü boş dizide, dinamik hataların () ile eşlenmesi sonucu olası bir değerdir.

Örnekler

Bu konu, veritabanındaki çeşitli xml tipi AdventureWorks2025 sütunlarda depolanan XML örneklerine karşı XQuery örnekleri sunmaktadır.

A. Kısmi özet ürün-model tanımlarını almak için substring() XQuery fonksiyonu kullanılarak

Sorgu, ürün modelini tanımlayan metnin ilk 50 karakterini, <Summary> yani belgedeki öğeyi alır.

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;  

Önceki sorgudan aşağıdakilere dikkat edin:

  • String() fonksiyonu, elemanın<Summary> string değerini döndürür. Bu fonksiyon kullanılır, çünkü öğe <Summary> hem metni hem de alt öğeleri (html biçimlendirme öğeleri) içerir ve bu öğeleri atlayıp tüm metni geri alırsınız.

  • Alt string() fonksiyonu, string() tarafından alınan dizi değerinden ilk 50 karakteri alır.

Bu kısmi bir sonuçdur:

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

Ayrıca Bkz.

Xml Veri Türüne Karşı XQuery İşlevleri