Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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>
...