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.