sql >> Database >  >> RDS >> Sqlserver

Ontdek aan welke partitie een bepaalde waarde zou worden toegewezen in SQL Server (T-SQL)

Als je een gepartitioneerde tabel of index in SQL Server hebt, en je wilt bepalen aan welke partitie een bepaalde waarde zou worden toegewezen, dan kun je dit mooi en snel doen met de $PARTITION systeemfunctie.

Het enige dat u hoeft te weten, is de naam van de partitiefunctie (en natuurlijk de waarde waarin u geïnteresseerd bent).

Voorbeeld

Hier is een voorbeeld om te demonstreren.

SELECT $PARTITION.MoviesPartitionFunction(5);

Resultaat:

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

In dit geval is de waarde 5 zou in partitie nummer 2 gaan.

Laten we wat andere waarden proberen.

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

Resultaat:

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

Cross-databasequery's

U kunt de databasenaam ook vooraf laten gaan om een ​​andere database op te vragen.

SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);

Conversie van gegevenstype

Het gegevenstype van de waarde die u opgeeft, moet overeenkomen met of impliciet converteerbaar zijn naar het gegevenstype van de bijbehorende partitiekolom.

Zo niet, dan krijg je waarschijnlijk fout 245.

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

Resultaat:

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

Merk op dat $PARTITION retourneert het partitienummer voor elke geldige waarde, ongeacht of de waarde momenteel bestaat in een gepartitioneerde tabel of index die de partitiefunctie gebruikt.


  1. Microseconden aftrekken van een Datetime-waarde in MariaDB

  2. MariaDB JSON_TYPE() uitgelegd

  3. Hoe ontbrekende datums in MySQL in te vullen?

  4. Ontbrekende datums in PostgreSQL invullen met behulp van gene_series