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 範例,這些執行個體是儲存在 AdventureWorks2008R2 資料庫的數個 xml 類型資料行中。如需這些資料行中每個資料行的概觀,請參閱<在 AdventureWorks2008R2 資料庫中的 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> 元素子系。