min 函數 (XQuery)
從不可部份完成值 $arg 的序列傳回,一個值的項目少於所有其他的值。
語法
fn:min($arg as xdt:anyAtomicType*) as xdt:anyAtomicType?
引數
- $arg
從項目序列傳回最小值。
備註
已傳遞至 min() 的不可部份完成值之所有類型,必須是相同基底類型的子類型。 接受的基底類型是支援 gt 作業的類型。 這些類型包含三個內建數值基底類型以及日期/時間基底類型,它們是 xs:string、xs:boolean 以及 xdt:untypedAtomic。 xdt:untypedAtomic 類型的值會轉換為 xs:double。 如果混合了這些類型,或是如果傳遞了其他類型的值,就會引發靜態錯誤。
min() 的結果會接收以類型傳遞的基底類型,例如以 xdt:untypedAtomic 為例則是 xs:double。 如果輸入是靜態空白,則會隱含空白並傳回靜態錯誤。
min() 函數會傳回序列中的其中一個值,這個值將小於輸入序列中的任何其他值。 對於 xs:string 值,會使用預設 Unicode 字碼指標定序。 如果 xdt:untypedAtomic 值無法轉換為 xs:double,在輸入序列 $arg 中就會忽略該值。 如果輸入是動態計算的空白序列,則會傳回空白序列。
範例
本主題針對 XML 執行個體提供 XQuery 範例,這些執行個體是儲存在 AdventureWorks 資料庫的各種 xml 類型資料行中。
A.使用 min() XQuery 函數尋找包含最少工時的工作中心位置
下列查詢擷取在製造產品型號 (ProductModelID=7) 的過程中,包含最少工時的所有工作中心位置。 一般而言,會傳回單一位置,如下所示。 如果有多個位置包含相等的最少工時數目,就會將它們全部傳回。
select ProductModelID, Name, Instructions.query('
declare namespace AWMI=
"https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $Location in /AWMI:root/AWMI:Location
where $Location/@LaborHours =
min( /AWMI:root/AWMI:Location/@LaborHours )
return
<Location WCID= "{ $Location/@LocationID }"
LaborHrs= "{ $Location/@LaborHours }" />
') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
請注意下列項目是從上一個查詢而來:
- 在 XQuery 初構中的 namespace 關鍵字定義了命名空間前置詞。 之後會在 XQuery 主體中使用前置詞。
XQuery 主體會建構 XML,它包含具有 WCID 與 LaborHrs 屬性的 <Location> 元素。
- 該查詢也會擷取 ProductModelID 與名稱值。
以下是結果:
ProductModelID Name Result
--------------- ---------------- ---------------------------------
7 HL Touring Frame <Location WCID="45" LaborHrs="0.5"/>
實作限制
以下為其限制:
min() 函數會將所有的整數對應至 xs:decimal。
不支援 xs:duration 類型值的 min() 函數。
不支援跨越基底類型界限的混合類型。
不支援提供定序的語法選項。