Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tìm hiểu phân vùng nào mà một giá trị nhất định sẽ được ánh xạ tới trong SQL Server (T-SQL)

Nếu bạn có một bảng hoặc chỉ mục được phân vùng trong SQL Server và bạn muốn xác định phân vùng nào mà một giá trị nhất định sẽ được ánh xạ tới, bạn có thể thực hiện việc này một cách dễ dàng và nhanh chóng với $PARTITION chức năng hệ thống.

Tất cả những gì bạn cần biết là tên của hàm phân vùng (và tất nhiên, giá trị mà bạn quan tâm).

Ví dụ

Đây là một ví dụ để chứng minh.

SELECT $PARTITION.MoviesPartitionFunction(5);

Kết quả:

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

Trong trường hợp này, giá trị 5 sẽ chuyển sang phân vùng số 2.

Hãy thử một số giá trị khác.

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

Kết quả:

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

Truy vấn cơ sở dữ liệu chéo

Bạn cũng có thể đặt trước tên cơ sở dữ liệu để truy vấn một cơ sở dữ liệu khác.

SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);

Chuyển đổi loại dữ liệu

Kiểu dữ liệu của giá trị bạn cung cấp phải khớp hoặc hoàn toàn có thể chuyển đổi thành kiểu dữ liệu của cột phân vùng tương ứng.

Nếu không, có thể bạn sẽ gặp lỗi 245.

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

Kết quả:

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

Lưu ý rằng $PARTITION trả về số phân vùng cho bất kỳ giá trị hợp lệ nào, bất kể giá trị hiện có tồn tại trong bảng hoặc chỉ mục được phân vùng sử dụng hàm phân vùng hay không.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORDER BY (CHỌN NULL) nghĩa là gì?

  2. Nhóm hội thoại của nhà môi giới dịch vụ máy chủ Sql

  3. Cách sao lưu hoặc tạo bảng mới từ Bảng SQL Server Hiện có trong SQL Server - Hướng dẫn sử dụng SQL Server / TSQL Phần 105

  4. xác định bộ ký tự của một bảng / cơ sở dữ liệu?

  5. Tách chuỗi được phân cách bằng dấu phẩy và chèn vào bảng (int)