Megosztás a következőn keresztül:


Függvények sztringértékeken – részszűrés

A következőkre vonatkozik:SQL Server

A $sourceStringértékének egy részét adja vissza , a $startingLoc értékétől kezdődően, , és a $lengthértéke által jelzett karakterek számát folytatja .

Szintaxis

  
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?  

Érvek

$sourceString
Forrássztring.

$startingLoc
A forrássztring kiindulási pontja, ahonnan a részsztring elindul. Ha ez az érték negatív vagy 0, csak a nullánál nagyobb pozíciókban lévő karakterek lesznek visszaadva. Ha nagyobb, mint a $sourceStringhossza, a nulla hosszúságú sztring lesz visszaadva.

$length
[nem kötelező] Beolvasandó karakterek száma. Ha nincs megadva, az $startingLoc a sztring végéig visszaadja az összes karaktert a megadott helyről.

Megjegyzések

A függvény háromargumentumos verziója azokat a karaktereket adja vissza $sourceString, amelyeknek a pozícióját $p betartja:

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

A $length értéke nagyobb lehet, mint a kezdő pozíciót követő $sourceString értékében szereplő karakterek száma. Ebben az esetben az alászúrás a $sourceStringvégéig visszaadja a karaktereket.

A sztring első karaktere az 1. pozícióban található.

Ha a $sourceString értéke az üres sorozat, akkor a függvény nulla hosszúságú sztringként kezeli. Ellenkező esetben, ha $startingLoc vagy $length az üres sorozat, a függvény az üres sorozatot adja vissza.

Kiegészítő karakterek (helyettesítő párok)

Az XQuery-függvényekben a helyettesítő párok viselkedése az adatbázis kompatibilitási szintjétől és bizonyos esetekben a függvények alapértelmezett névterének URI-jától függ. További információt az SQL Server 2016 adatbázismotor-funkcióinak kompatibilitástörő változásairóltémakör "XQuery Functions Are Surrogate-Aware" című szakaszában talál. Lásd még ALTER DATABASE kompatibilitási szintjét (Transact-SQL) és rendezési és Unicode-támogatási.

Megvalósítási korlátozások

Az SQL Server megköveteli, hogy a $startingLoc és $length paraméterek xs:decimális típusúak legyenek xs:double helyett.

Az SQL Server lehetővé teszi, hogy $startingLoc és $length legyen az üres sorozat, mivel az üres sorozat egy lehetséges érték, amely a ()-ra leképezett dinamikus hibák miatt lehetséges.

Példák

Ez a témakör XQuery-példákat tartalmaz a különböző xml- típusú oszlopokban tárolt XML-példányokra az AdventureWorks2025 adatbázisban.

Egy. A substring() XQuery függvény használata részleges összefoglaló termékmodell-leírások lekéréséhez

A lekérdezés lekéri a termékmodellt, a dokumentum <Summary> elemét leíró szöveg első 50 karakterét.

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;  

Jegyezze fel az előző lekérdezésben szereplő következőket:

  • A sztring() függvény a<Summary> elem sztringértékét adja vissza. Ez a függvény azért használatos, mert a <Summary> elem tartalmazza a szöveget és az alelemeket (html formázási elemeket), és mivel kihagyja ezeket az elemeket, és lekéri az összes szöveget.

  • A substring() függvény lekéri az első 50 karaktert a sztring()által lekért sztringértékből.

Ez egy részleges eredmény:

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>  
...  

Lásd még:

XQuery-függvények xml adattípusú