Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Gäller för:SQL Server
Returnerar en del av värdet $sourceString, med start på positionen som anges av värdet $startingLoc, och fortsätter för antalet tecken som anges av värdet $length.
Syntax
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
Källsträng.
$startingLoc
Startpunkt i källsträngen från vilken delsträngen börjar. Om detta värde är negativt eller 0, returneras endast de tecken som är större än noll. Om den är större än längden på $sourceString returneras strängen med nolllängd.
$length
[valfritt] Antal tecken att hämta. Om det inte specificeras, returnerar den alla tecken från platsen som anges i $startingLoc fram till slutet av strängen.
Anmärkningar
Den treargumentiga versionen av funktionen returnerar de tecken i $sourceString vars position $p lyder:
fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)
Värdet av $length kan vara större än antalet tecken i värdet $sourceString efter startpositionen. I detta fall returnerar delsträngen tecknen upp till slutet av $sourceString.
Den första tecknet i en sträng är placerat på position 1.
Om värdet av $sourceString är den tomma sekvensen hanteras det som en sträng med nolllängd. Annars, om antingen $startingLoc eller $length är den tomma sekvensen, returneras den tomma sekvensen.
Kompletterande tecken (surrogatpar)
Beteendet hos surrogatpar i XQuery-funktioner beror på databasens kompatibilitetsnivå och i vissa fall på standardnamnrymdens URI för funktioner. För mer information, se avsnittet "XQuery Functions Are Surrogate-Aware" i ämnet Breaking Changes to Database Engine Functions in SQL Server 2016. Se även ALTER DATABASE Compatibility Level (Transact-SQL) och Collation and Unicode Support.
Implementeringsbegränsningar
SQL Server kräver att $startingLoc och $length parametrar är av typen xs:decimal istället för xs:double.
SQL Server tillåter att $startingLoc och $length är den tomma sekvensen, eftersom den tomma sekvensen är ett möjligt värde som ett resultat av dynamiska fel som mappas till ().
Examples
Detta ämne ger XQuery-exempel mot XML-instanser lagrade i olika XML-typkolumner i databasen AdventureWorks2025 .
A. Med hjälp av delsträng() XQuery-funktionen för att hämta partiella sammanfattningsbeskrivningar av produktmodellen
Frågan hämtar de första 50 tecknen i texten som beskriver produktmodellen, elementet <Summary> i dokumentet.
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;
Observera följande från föregående fråga:
Sträng()-funktionen returnerar strängvärdet för elementet<
Summary>. Denna funktion används eftersom elementet <Summary> innehåller både texten och delelementen (html-formateringselement), och för att du hoppar över dessa element och hämtar all text.Delsträngen()-funktionen hämtar de första 50 tecknen från strängvärdet som strängen() hämtar.
Detta är ett partiellt resultat:
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>
...