節點的相關函式 - local-name
適用於:SQL Server
傳回$arg名稱的本機部分,做為 xs:string,該字串會是長度為零的字串,或將具有 xs:NCName 的語彙形式。 如果未提供 自變數,則預設值為內容節點。
語法
fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string
引數
$arg
將擷取本機名稱部分的節點名稱。
備註
在 SQL Server 中, 沒有自變數的 fn:local-name() 只能在內容相依述詞的內容中使用。 具體來說,它只能用在括弧內(
[ ]
)。如果提供 自變數且 為空序列,則函式會傳回長度為零的字串。
如果目標節點沒有名稱,因為它是文件節點、批註或文字節點,函式會傳回長度為零的字串。
範例
本主題針對 AdventureWorks 資料庫中各種 xml 類型數據行中儲存的 XML 實例,提供 XQuery 範例。
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. 在述詞中使用不含自變數的local-name
下列查詢是針對 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
查詢會傳回專案的所有 <Location
> 項目子 <root
> 系。