Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Vrátí část hodnoty $sourceStringzačínající hodnotou $startingLoc, a pokračuje pro počet znaků označených hodnotou $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?
Argumenty
$sourceString
Zdrojový řetězec.
$startingLoc
Počáteční bod ve zdrojovém řetězci, ze kterého začíná podřetězce. Pokud je tato hodnota záporná nebo 0, vrátí se pouze tyto znaky v pozicích větších než nula. Pokud je větší než délka $sourceString, vrátí se řetězec nulové délky.
$length
[volitelné] Počet znaků, které se mají načíst Pokud není zadaný, vrátí všechny znaky z umístění zadaného v $startingLoc až do konce řetězce.
Poznámky
Verze funkce se třemi argumenty vrátí znaky v $sourceString
, jejichž pozice $p
poslechne:
fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)
Hodnota $length může být větší než počet znaků v hodnotě $sourceString za počáteční pozicí. V tomto případě vrátí podřetětěr znaky až na konec $sourceString.
První znak řetězce se nachází na pozici 1.
Pokud je hodnota $sourceString prázdná sekvence, zpracuje se jako řetězec nulové délky. Jinak pokud je prázdná sekvence $startingLoc nebo $length, vrátí se prázdná sekvence.
Doplňkové znaky (náhradní dvojice)
Chování náhradních párů ve funkcích XQuery závisí na úrovni kompatibility databáze a v některých případech na výchozím identifikátoru URI oboru názvů pro funkce. Další informace najdete v části Funkce XQuery Jsou náhradní funkce v tématu Zásadní změny funkcí databázového stroje v SQL Serveru 2016. Viz také úroveň kompatibility ALTER DATABASE (Transact-SQL) a kolace a podporu kódování Unicode.
Omezení implementace
SQL Server vyžaduje, aby parametry $startingLoc a $length byly typu xs:decimal místo xs:double.
SQL Server umožňuje, aby $startingLoc a $length byly prázdnou sekvencí, protože prázdná sekvence je možnou hodnotou v důsledku namapování dynamických chyb na ().
Příklady
Toto téma obsahuje příklady XQuery pro instance XML uložené v různých xml sloupce typu v AdventureWorks2022
databázi.
A. Použití podřetězce() funkce XQuery k načtení částečných popisů souhrnného modelu produktu
Dotaz načte prvních 50 znaků textu, který popisuje model produktu, <Summary
> prvek v dokumentu.
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;
Všimněte si následujících věcí z předchozího dotazu:
Funkce string() vrátí řetězcovou hodnotu prvku<
Summary
>. Tato funkce se používá, protože prvek <Summary
> obsahuje text i dílčí prvky (prvky formátování html) a protože tyto prvky přeskočíte a načtete celý text.Funkce podřetězce načte prvních 50 znaků z řetězcové hodnoty načtené string().
Jedná se o částečný výsledek:
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>
...
Viz také
funkce XQuery proti datového typu XML