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() 函數。

  • 不支援跨越基底類型界限的混合類型。

  • 不支援提供定序的語法選項。

請參閱

參考

針對 xml 資料類型的 XQuery 函數