sql >> Databasteknik >  >> RDS >> Sqlserver

Ta reda på vilken partition ett givet värde skulle mappas till i SQL Server (T-SQL)

Om du har en partitionerad tabell eller index i SQL Server, och du vill bestämma vilken partition ett givet värde skulle mappas till, kan du göra detta snabbt och smidigt med $PARTITION systemfunktion.

Allt du behöver veta är namnet på partitionsfunktionen (och naturligtvis värdet du är intresserad av).

Exempel

Här är ett exempel att visa.

SELECT $PARTITION.MoviesPartitionFunction(5);

Resultat:

+--------------------+
| (No column name)   |
|--------------------|
| 2                  |
+--------------------+

I det här fallet är värdet 5 skulle gå in i partition nummer 2.

Låt oss prova några andra värden.

SELECT 
    $PARTITION.MoviesPartitionFunction(-100) AS [-100],
    $PARTITION.MoviesPartitionFunction(100) AS [100],
    $PARTITION.MoviesPartitionFunction(1000) AS [1000],
    $PARTITION.MoviesPartitionFunction(100000) AS [100000];

Resultat:

+--------+-------+--------+----------+
| -100   | 100   | 1000   | 100000   |
|--------+-------+--------+----------|
| 1      | 2     | 3      | 4        |
+--------+-------+--------+----------+

Frågor över databaser

Du kan också prefixa databasnamnet för att fråga en annan databas.

SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);

Datatypkonvertering

Datatypen för värdet du anger måste antingen matcha eller vara implicit konverterbar till datatypen för dess motsvarande partitioneringskolumn.

Om inte, kommer du förmodligen att få fel 245.

SELECT $PARTITION.MoviesPartitionFunction('Hey!');

Resultat:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Hey!' to data type int.

Observera att $PARTITION returnerar partitionsnumret för alla giltiga värden, oavsett om värdet för närvarande finns i en partitionerad tabell eller index som använder partitionsfunktionen.


  1. FORMAT() Exempel i MySQL

  2. Använd COL_LENGTH() för att få en kolumns längd i SQL Server

  3. Hur modellerar man effektivt arv i en databas?

  4. Datum i en URL dd/mm/åååå