Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op:SQL Server
Geeft een deel van de waarde van $sourceString terug, beginnend op de positie aangegeven door de waarde van $startingLoc, en gaat door voor het aantal tekens dat wordt aangegeven door de waarde van $length.
Syntaxis
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
Bronstring.
$startingLoc
Startpunt in de bronstring waar de substring begint. Als deze waarde negatief of 0 is, worden alleen die tekens op posities groter dan nul teruggegeven. Als deze groter is dan de lengte van de $sourceString, wordt de snaar van nullengte teruggegeven.
$length
[optioneel] Aantal tekens om op te halen. Als dit niet wordt gespecificeerd, retourneert het alle tekens van de locatie die in $startingLoc is gespecificeerd tot aan het einde van de tekenreeks.
Opmerkingen
De drie-argumentige versie van de functie geeft de karakters terug in $sourceString wier positie $p volgt:
fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)
De waarde van $length kan groter zijn dan het aantal tekens in de waarde van $sourceString na de startpositie. In dit geval geeft de substring de tekens terug tot het einde van $sourceString.
Het eerste teken van een string bevindt zich op positie 1.
Als de waarde van $sourceString de lege reeks is, wordt deze behandeld als de nul-lengte string. Anders, als $startingLoc of $length de lege reeks is, wordt de lege reeks teruggegeven.
Aanvullende tekens (surrogaatparen)
Het gedrag van surrogaatparen in XQuery-functies hangt af van het compatibiliteitsniveau van de database en in sommige gevallen van de standaard naamruimte-URI voor functies. Voor meer informatie, zie de sectie "XQuery Functions Are Surrogate-Aware" in het onderwerp Breaking Changes to Database Engine Features in SQL Server 2016. Zie ook ALTER DATABASE Compatibiliteitsniveau (Transact-SQL) en Collatie en Unicode Ondersteuning.
Implementatiebeperkingen
SQL Server vereist dat de parameters van de $startingLoc en $length van type xs:decimaal zijn in plaats van xs:double.
SQL Server maakt het mogelijk dat $startingLoc en $length de lege reeks zijn, omdat de lege reeks een mogelijke waarde is als gevolg van dynamische fouten die worden toegewezen aan ().
Voorbeelden
Dit onderwerp biedt XQuery-voorbeelden tegen XML-instanties die zijn opgeslagen in verschillende xml-type kolommen in de AdventureWorks2025 database.
Eén. Gebruik van de substring() XQuery-functie om gedeeltelijke samenvattende productmodelbeschrijvingen op te halen
De query haalt de eerste 50 tekens van de tekst op die het productmodel beschrijft, het <Summary> element in het document.
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;
Let op het volgende uit de vorige query:
De string()- functie geeft de stringwaarde van het<
Summary> element terug. Deze functie wordt gebruikt omdat het <Summary> element zowel de tekst als subelementen bevat (html-opmaakelementen), en omdat je deze elementen overslaat en alle tekst ophaalt.De substring()- functie haalt de eerste 50 tekens op van de string die door de string() wordt opgehaald.
Dit is een gedeeltelijk resultaat:
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>
...