Aracılığıyla paylaş


alt dize işlev (XQuery)

Değerinin bir kısmını verir $sourceString, değeri tarafından belirtilen konumda başlatılıyor $startingLoc, değeri tarafından belirtilen karakter için devam eder. $length.

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
    Başlangıç noktası veri kaynağında dize içinden alt dize başlatır.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 belirtilen konum verir $startingLoc en fazla dize sonu.

Remarks

Üç bağımsız değişkeni sürüm işlev karakterleri verir. $sourceString konumu $p obeys:

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

Değeri $length değeri karakter sayısından büyük olabilir $sourceString başlangıç konumu aşağıdaki. Bu durumda, alt sonuna kadar olan karakterleri verir. $sourceString.

Ilk karakteri bir dize 1 konumunda bulunur.

Değeri $sourceString boş sırası, sıfır uzunluklu dize olarak ele alınır. Aksi takdirde, ya da, $startingLoc veya $length boş sırası, sıra boş döndürdü.

Örnekler

Bu konu, çeşitli içinde depolanan XML örnekleri karşı XQuery örnekler sağlar. XML türü sütunlarındaki AdventureWorks veritabanındaki.Konusuna genel bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks veritabanındaki.

C.XQuery substring() kullanarak işlev kısmi Özet ürün modelinin açıklamalarını almak için

Sorgu, ürün modeli, açıklayan metnin ilk 50 karakterini alır <Summary> Belgedeki öğe.

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 dize() işlev returns the dize value of the<Summary> element.Bu işlev için kullanılır bu, <Summary> hem metin hem de alt (html) öğeleri biçimlendirme, bir öğe içeriyor ve bu öğeleri atla ve tüm metni almak.

  • The substring() işlev retrieves the first 50 characters from the dize value retrieved by the dize().

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 $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 ve UTF-16 karakter çiftlerini bir yerine iki karakter olarak sayılır.