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

FILE_ID () so với FILE_IDEX () trong SQL Server:Sự khác biệt là gì?

Trong SQL Server, bạn có thể sử dụng FILE_IDEX() chức năng trả về ID của một tệp cơ sở dữ liệu nhất định. Bạn cũng có thể sử dụng FILE_ID() chức năng để làm điều tương tự. Cả hai hàm đều phục vụ cùng một mục đích, vậy tại sao T-SQL lại có cả hai hàm?

Có vẻ như FILE_IDEX() thay thế cho FILE_ID() và nó hỗ trợ nhiều ID tệp hơn. Microsoft hiện khuyến nghị không nên sử dụng FILE_ID() , vì nó đang ở chế độ bảo trì và có thể bị xóa trong phiên bản SQL Server trong tương lai.

Vì vậy, nếu bạn đang tìm kiếm câu trả lời nhanh cho hàm nào sẽ sử dụng, hãy sử dụng FILE_IDEX() .

Nhưng nếu bạn quan tâm đến sự khác biệt giữa hai chức năng này, hãy đọc tiếp.

Sự khác biệt

Sự khác biệt giữa FILE_IDEX()FILE_ID() nằm trong các loại trả lại.

  • FILE_IDEX() trả về một int .
  • FILE_ID() trả về smallint .

Thực tế là FILE_IDEX() trả về một số nguyên có nghĩa là nó có thể xử lý các ID tệp lớn hơn. Ví dụ, nó có thể xử lý các danh mục toàn văn.

smallint kiểu dữ liệu chỉ có thể xử lý các giá trị tối đa 32,767, trong khi int có thể xử lý các giá trị lên đến 2,147,483,647. Trong SQL Server, số nhận dạng tệp được gán cho danh mục toàn văn vượt quá 32,767 và do đó, FILE_ID() không hỗ trợ danh mục toàn văn.

Ví dụ

Dưới đây là một ví dụ nhanh để chứng minh các hạn chế của FILE_ID() khi so sánh với FILE_IDEX() :

USE WideWorldImportersDW;
SELECT 
  FILE_IDEX('WWIDW_InMemory_Data_1') AS [FILE_IDEX()],
  FILE_ID('WWIDW_InMemory_Data_1') AS [FILE_ID()];

Kết quả:

+---------------+-------------+
| FILE_IDEX()   | FILE_ID()   |
|---------------+-------------|
| 65537         | NULL        |
+---------------+-------------+

Trong trường hợp này, ID tệp vượt quá 32,767 và do đó FILE_ID() trả về NULL .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các thay đổi cột chỉ siêu dữ liệu mới trong SQL Server 2016

  2. Làm cách nào để tạo các dạng xem cụ thể hóa trong SQL Server?

  3. Kiểm tra xem bảng tạm thời có tồn tại hay không và xóa nếu bảng đó tồn tại trước khi tạo bảng tạm thời

  4. Cập nhật giá trị khóa chính bằng khung thực thể

  5. Làm cách nào để chọn ngày đầu tiên của tháng trong SQL?