$PARTITION (Transact-SQL)

Возвращает номер секции, с которой будет сопоставлен набор значений столбцов для любой определенной функции секции.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

[ database_name. ] $PARTITION.partition_function_name(expression)

Аргументы

  • database_name
    Имя базы данных, которая содержит функцию секционирования.
  • partition_function_name
    Имя существующей функции секционирования, которая применяется к набору значений столбцов секционирования.
  • expression
    Аргумент expression, тип данных которого должен совпадать или иметь возможность неявного преобразования к типу данных соответствующего столбца секционирования. Аргумент expression является также именем столбца секционирования, который передается в функцию partition_function_name.

Типы возвращаемых данных

int

Замечания

$PARTITION возвращает значение типа int между 1 и числом секций функции секционирования.

$PARTITION возвращает номер секции для любого допустимого значения вне зависимости от того, существует ли данное значение в секционированной таблице или индексе, который пользуется функцией секционирования.

Примеры

A. Получение номера секции для набора значений столбцов секционирования

Следующий пример создает функцию секционирования RangePF1 для разделения таблицы или индекса на четыре секции. $PARTITION используется для определения того, что значение 10, представляющее столбец секционирования RangePF1, попадет в секцию 1 таблицы.

USE AdventureWorks ;
GO
CREATE PARTITION FUNCTION RangePF1 ( int )
AS RANGE FOR VALUES (10, 100, 1000) ;
GO
SELECT $PARTITION.RangePF1 (10) ;
GO

Б. Получение количества строк в каждой непустой секции секционированной таблицы или представления

Следующий пример иллюстрирует получение числа строк в каждой секции таблицы TransactionHistory, которая содержит данные. Таблица TransactionHistory использует функцию секционирования TransactionRangePF1, которая разбивает ее по столбцу TransactionDate.

ms188071.note(ru-ru,SQL.90).gifПримечание.
Для выполнения этого примера требуется запустить сценарий PartitionAW.sql для образца базы данных AdventureWorks. Дополнительные сведения см. в разделе Readme_PartitioningScript.
USE AdventureWorks ;
GO
SELECT $PARTITION.TransactionRangePF1(TransactionDate) AS Partition, 
COUNT(*) AS [COUNT] FROM Production.TransactionHistory 
GROUP BY $PARTITION.TransactionRangePF1(TransactionDate)
ORDER BY Partition ;
GO

В. Получение всех строк из одной секции секционированной таблицы или индекса

Следующий пример иллюстрирует получение всех строк, которые содержит секция 5 таблицы TransactionHistory.

ms188071.note(ru-ru,SQL.90).gifПримечание.
Для выполнения этого примера требуется запустить сценарий PartitionAW.sql для образца базы данных AdventureWorks. Дополнительные сведения см. в разделе Readme_PartitioningScript.
SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;

См. также

Справочник

CREATE PARTITION FUNCTION (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005