substring 函數 (XQuery)

傳回 $sourceString 值的一部分,從 $startingLoc, 值所指示的位置開始,一直到 $length 值所指示的字元數為止。

語法

fn:substring($sourceString as xs:string?,
                          $startingLoc  as 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,則只傳回位置大於 0 的那些字元。 如果值大於 $sourceString 的長度,則傳回長度為 0 的字串。

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

備註

此函數的三引數版本會傳回 $sourceString 中位置 $p 遵守的字元數:

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

$length 的值可大於 $sourceString 值在開始位置之後的字元數。 在此案例中,子字串會傳回到 $sourceString 結尾之前的字元。

字串的第一個字元是在位置 1。

如果 $sourceString 的值是空的時序,則會當成零長度的字串來處理。 否則,如果 $startingLoc 或 $length 是空的序列,則傳回空的序列。

補充字元 (Surrogate 字組)

XQuery 函式中 Surrogate 字組的行為相依於資料庫相容性層級,而且在某些情況下,還相依於函式的預設命名空間 URI。 如需詳細資訊,請參閱<SQL Server 2014 中對於 Database Engine 的重大變更>主題中的「XQuery 函式是 Surrogate 感知的」一節。 另請參閱<ALTER DATABASE 相容性層級 (Transact-SQL)>和<定序與 Unicode 支援>。

實作限制

SQL Server 要求 $startingLoc 和 $length parameters 為 xs:decimal 類型,而非 xs:double 類型。

SQL Server 允許 $startingLoc 和 $length 為空的序列,因為空的序列可能是動態錯誤對應到 () 的結果值。

範例

本主題是針對 XML 執行個體提供 XQuery 範例,這些執行個體是儲存在 AdventureWorks2012 資料庫的數個 xml 類型資料行中。

A.使用 substring() 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 函數