sql >> Databáze >  >> RDS >> Sqlserver

Zjistěte, na který oddíl by byla daná hodnota namapována v SQL Server (T-SQL)

Pokud máte na serveru SQL rozdělenou tabulku nebo index a chcete určit, na který oddíl by byla daná hodnota namapována, můžete to udělat pěkně a rychle pomocí $PARTITION systémové funkce.

Vše, co potřebujete znát, je název funkce oddílu (a samozřejmě hodnotu, která vás zajímá).

Příklad

Zde je příklad k demonstraci.

SELECT $PARTITION.MoviesPartitionFunction(5);

Výsledek:

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

V tomto případě hodnota 5 přejde do oddílu číslo 2.

Zkusme jiné hodnoty.

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

Výsledek:

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

Dotazy napříč databázemi

Můžete také zadat předponu názvu databáze, abyste se mohli dotazovat na jinou databázi.

SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);

Konverze typu dat

Datový typ hodnoty, kterou zadáte, se musí buď shodovat, nebo musí být implicitně převoditelný na datový typ příslušného rozdělovacího sloupce.

Pokud ne, pravděpodobně se zobrazí chyba 245.

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

Výsledek:

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

Všimněte si, že $PARTITION vrátí číslo oddílu pro jakoukoli platnou hodnotu bez ohledu na to, zda hodnota aktuálně existuje v dělené tabulce nebo indexu, který používá funkci oddílu.


  1. ERROR 2006 (HY000):Server MySQL odešel

  2. Jak najít umístění datových souborů a souborů protokolu na serveru SQL Server

  3. Oracle Kombinujte několik sloupců do jednoho

  4. Je možné vybrat data serveru SQL pomocí pořadové pozice sloupce