$PARTITION (Transact-SQL)
傳回資料分割編號,做為一組資料分割資料行值針對 SQL Server 2012 中任何指定的資料分割函數對應的目標。
語法
[ database_name. ] $PARTITION.partition_function_name(expression)
引數
database_name
這是包含資料分割函數的資料庫名稱。partition_function_name
這是要套用一組資料分割資料行值的任何現有資料分割函數的名稱。expression
這是資料類型必須完全符合或可隱含地轉換成對應資料分割資料行之資料類型的運算式。 expression 也可以是目前參與 partition_function_name 之資料分割資料行的名稱。
傳回類型
int
備註
$PARTITION 會傳回一個 1 和資料分割函數的資料分割數目之間的 int 值。
$PARTITION 會傳回任何有效值的資料分割編號,不論使用資料分割函數的資料分割資料表或索引中目前的值為何,都是如此。
範例
A.取得一組資料分割資料行值的資料分割編號
下列範例建立 RangePF1 資料分割函數,將資料表或索引分割成四份資料分割。 $PARTITION 用來決定代表 RangePF1 之資料分割資料行的 10 值,將放在資料表的第 1 個資料分割中。
USE AdventureWorks2012;
GO
CREATE PARTITION FUNCTION RangePF1 ( int )
AS RANGE FOR VALUES (10, 100, 1000) ;
GO
SELECT $PARTITION.RangePF1 (10) ;
GO
B.取得在資料分割資料表或索引的每個非空白資料分割中之資料列數目
下列範例會傳回包含資料之 TransactionHistory 資料表的每個資料分割中之資料列數目。 TransactionHistory 資料表使用資料分割函數 TransactionRangePF1,它在 TransactionDate 資料行上進行資料分割。
若要執行這個範例,您必須先針對 AdventureWorks2012 範例資料庫執行 PartitionAW.sql 指令碼。 如需詳細資訊,請參閱 PartitioningScript。
USE AdventureWorks2012;
GO
SELECT $PARTITION.TransactionRangePF1(TransactionDate) AS Partition,
COUNT(*) AS [COUNT] FROM Production.TransactionHistory
GROUP BY $PARTITION.TransactionRangePF1(TransactionDate)
ORDER BY Partition ;
GO
C.從資料分割資料表或索引的某份資料分割中,傳回所有資料列
下列範例會傳回 TransactionHistory 資料表之第 5 個資料分割的所有資料列。
[!附註]
若要執行這個範例,您必須先針對 AdventureWorks2012 範例資料庫執行 PartitionAW.sql 指令碼。 如需詳細資訊,請參閱 PartitioningScript。
SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;