共用方式為


local-name 函數 (XQuery)

以 xs:string 傳回 $arg 名稱的本機部份,它有可能是零長度的字串或是將會有 xs:NCName 的語彙格式。如果沒有提供引數,預設值是內容節點。

語法

fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string

引數

  • $arg
    將會擷取節點名稱的本機名稱部份。

備註

  • 在 SQL Server 中,沒有引數的 fn:local-name() 只能用於內容相依述詞的內容中。具體而言,它只能在括號 ([ ]) 內使用。

  • 如果提供引數,而且是空白時序,函數會傳回零長度的字串。

  • 如果目標節點沒有名稱,因為它是文件節點、註解或文字節點,函數會傳回零長度的字串。

範例

本主題是針對 XML 執行個體提供 XQuery 範例,這些執行個體是儲存在 AdventureWorks 資料庫的各個 xml 類型的資料行中。如需這些資料行中每個資料行的概觀,請參閱<在 AdventureWorks 資料庫中的 xml 資料類型表示法>。

A. 擷取特定節點的本機名稱

下列查詢是針對不具類型的 XML 執行個體所指定。查詢運算式 local-name(/ROOT[1]) 會擷取指定節點的本機名稱部份。

declare @x xml
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('local-name(/ROOT[1])')
-- result = ROOT

下列查詢是針對 ProductModel 資料表的 Instructions 資料行 (具類型的 xml 資料行) 所指定。運算式 local-name(/AWMI:root[1]/AWMI:Location[1]) 會傳回指定節點的本機名稱 Location。

SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
     local-name(/AWMI:root[1]/AWMI:Location[1])') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
-- result = Location

B. 使用述詞中沒有引數的本機名稱

下列查詢是針對 ProductModel 資料表的 Instructions 資料行 (具類型的 xml 資料行) 所指定。運算式會傳回 QName 本機名稱部份為 "Location" 的 <root> 元素之所有的元素子系。在述詞中指定了 local-name() 函數,而且它沒有引數。該函數會使用內容節點。

SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
  /AWMI:root//*[local-name() = "Location"]') as Result
FROM Production.ProductModel
WHERE ProductModelID=7

查詢會傳回 <root> 元素的所有 <Location> 元素子系。