Udostępnij za pośrednictwem


podciąg funkcji (XQuery)

Zwraca część wartości $sourceString, począwszy od pozycji wskazanej przez wartość $startingLoc, , przez liczbę znaków wskazanych przez wartość $length.

Składnia

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?

Argumenty

  • $sourceString
    Ciąg źródłowy.

  • $startingLoc
    Punkt początkowy w ciąg źródło, z którego uruchamiany podciąg.Jeśli ta wartość jest ujemna lub 0, zwracane są tylko znaki w pozycjach większą niż zero.Jeśli jest większa niż długość $sourceString, zwrócony ciąg o zerowej długości.

  • $length
    [Opcjonalna] Liczba znaków do pobrania.Jeśli nie określono, zwraca wszystkie znaki z lokalizacji określonej w $startingLoc do końca ciąg.

Uwagi

Wersja trzech argumentu funkcja zwraca znaki w $sourceString stanowiska $p przestrzega:

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

Wartość $length może być większa niż liczba znaków w wartości $sourceString następującej pozycji start.W takim przypadek podciąg zwraca znaki do końca $sourceString.

Pierwszy znak w ciąg znajduje się w pozycji 1.

Jeśli wartość $sourceString jest pusta sekwencji jest obsługiwany jako ciąg znaków o zerowej długooci.Inaczej, jeśli $startingLoc lub $length jest pusta, zwracany jest pusty sekwencji.

Przykłady

W tym temacie przedstawiono przykłady XQuery przeciwko wystąpień XML przechowywanych w różnych xml wpisz kolumn w AdventureWorks2008R2 bazy danych.Przegląd tych kolumn, zobacz XML reprezentacji typu danych w bazie danych AdventureWorks2008R2.

A.Przy użyciu funkcja XQuery substring() pobrać częściowe zbiorcze opisy modelu produktu

Kwerenda pobiera pierwszych 50 znaków tekstu, który opisuje model produktu <Summary> element w dokumencie.

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;

Poniższe z poprzedniej kwerendy:

  • ciąg() funkcja zwraca wartość ciąg<Summary> element.Funkcja ta jest używana, ponieważ <Summary> element zawiera tekst i podelementy (html formatowanie elementów), ponieważ będzie pominąć te elementy i pobrać wszystkie tekstu.

  • Substring() funkcja pobiera pierwszych 50 znaków z wartości ciąg pobierane przez ciąg().

Jest to wynik częściowy:

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>

...

Ograniczenia wdrażania

Są następujące ograniczenia:

  • Program SQL Server wymaga $startingLoc i $length parameters być typu xs:decimal zamiast xs:double.

  • 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 ().

  • Pary części znaku dwuskładnikowego Unicode UTF-16 są liczone jako dwa znaki zamiast jednego.

Zobacz także

Odwołanie