分享方式:


字串值的相關函式 - substring

適用於:SQL Server

傳回$sourceString 值的 一部分,從$startingLoc值 所指示的位置開始, 然後繼續$length值所指示的 字元數。

語法

  
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?  

引數

$sourceString
來源字串。

$startingLoc
子字串從中開始的來源字串起點。 如果此值為負數或 0,則只會傳回位於大於零的位置字元。 如果大於$sourceString 長度,則會傳回長度為零的字串。

$length
[選擇性]要擷取的字元數。 如果未指定,則會傳回$startingLoc到字串結尾所指定 位置的所有字元。

備註

函式的三個引數版本會傳回其位置 $p 服從的 $sourceString 字元:

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

$length 的值 可以大於開始位置之後$sourceString 中的字元數。 在此情況下,子字串會傳回最多$sourceString 結尾的 字元。

字串的第一個字元位於位置 1。

如果 $sourceString 的值 是空序列,則會將其處理為長度為零的字串。 否則,如果 $startingLoc $length 是空序列,則會傳回空序列。

補充字元 (Surrogate 字組)

XQuery 函式中 Surrogate 配對的行為取決於資料庫相容性層級,在某些情況下,則取決於函式的預設命名空間 URI。 如需詳細資訊,請參閱 SQL Server 2016 中資料庫引擎功能的重大變更主題 中的一節。 另請參閱 ALTER DATABASE 相容性層級 (Transact-SQL) 定序和 Unicode 支援

實作限制

SQL Server 需要 $startingLoc $length參數 類型為 xs:decimal,而不是 xs:double。

SQL Server 允許 $startingLoc $length 為空序列,因為空序列是對應至 () 的動態錯誤所產生的可能值。

範例

本主題針對儲存在資料庫中各種 xml 類型資料行中的 AdventureWorks2022 XML 實例,提供 XQuery 範例。

A. 使用子字串() XQuery 函式來擷取部分摘要產品模型描述

查詢會擷取描述產品模型之文字的前 50 個字元, <Summary> 也就是檔中的專案。

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;  

請注意下列項目是從上一個查詢而來:

  • string() 函 式會傳回 專案的字串值 ><Summary 使用這個函式,因為 <Summary> 元素同時包含文字和子項目 (html 格式專案),而且您將略過這些元素並擷取所有文字。

  • substring() 式會從 string() 取的字串值擷取前 50 個字元。

這是部分結果:

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

另請參閱

針對 xml 資料類型的 XQuery 函式