alt dize işlevi (XQuery)
Sayı değerinin bir parçası $sourceString, başlatma değeri tarafından belirtilen konumda $startingLoc, ve karakter sayısı değeri tarafından belirtilen devam $length.
Sözdizimi
fn:substring($sourceString as xs:string?,
$startingLoc as as xs:decimal?) as xs:string?
fn:substring($sourceString as xs:string?,
$startingLoc as xs:decimal?,
$length as xs:decimal?) as xs:string?
Bağımsız değişkenler
$sourceString
Kaynak dize.$startingLoc
Alt dize başladığı Kaynak dizedeki başlangıç noktası.Bu değer, negatif veya 0 ise, yalnızca bu karakterleri pozisyonlarda sıfırdan büyük döndürülür.Uzunluğundan büyükse $sourceString, sıfır uzunluklu dize döndürdü.$length
[isteğe bağlı] Almak için karakter sayısı.Belirtilmezse, tüm karakterler içinde belirtilen konumdan verdiği $startingLoc kadar sonuna dize.
Açıklamalar
Karakterler, üç bağımsız işlev sürüm döndürür $sourceString , pozisyon $p obeys:
fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)
Değeri $length değeri, karakter sayısından daha büyük olabilir $sourceString izleyerek başlangıç konumu.Bu durum, alt dizenin sonuna kadar olan karakterleri verir $sourceString.
İlk karakteri bir dize 1 konumunda bulunur.
Varsa değeri $sourceString boş sırası ise, sıfır uzunluklu dize. ele alınırBaşka türlü, $startingLoc veya $length boş sırası, boş sırası döndürülür.
Örnekler
Bu konuda çeşitli içinde depolanan xml örnekleri karşı XQuery örnekler sağlar xml sütunları yazın AdventureWorks2008R2 veritabanı.Bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks2008R2 veritabanında.
A.Substring() XQuery kullanarak işlev kısmi Özet ürün modeli açıklamaları almak için
Ürün modeli açıklayan metnin ilk 50 karakterini sorgu alır <Summary> öğesi belge.
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:
The string() function returns the string value of the<Summary> element.Bu işlev, çünkü kullanılan <Summary> metin ve alt öğeler (html) biçimlendirme öğeleri, öğe içerir ve bu öğeleri atlamak ve almak tüm metin.
The substring() function retrieves the first 50 characters from the string value retrieved by the string().
Bu kısmi bir sonucudur:
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>
...
Uygulama kısıtlamaları
Sınırlamalar şunlardır:
sql Server gerektirir $startingLoc ve $length parameters türü xs:decimal xs:double. yerine, olması için
SQL Server allows$startingLoc and $length to be the empty sequence, because the empty sequence is a possible value as a result of dynamic errors being mapped to ().
Unicode utf-16 temsilci çiftleri bir yerine iki karakter olarak sayılır.