Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

FILE_ID() срещу FILE_IDEX() в SQL Server:Каква е разликата?

В SQL Server можете да използвате FILE_IDEX() функция за връщане на идентификатора на даден файл на базата данни. Можете също да използвате FILE_ID() функция да направи същото нещо. И двете функции служат почти за една и съща цел, така че защо T-SQL има и двете функции?

Изглежда, че FILE_IDEX() е заместител на FILE_ID() и поддържа по-голям набор от идентификатори на файлове. Microsoft вече препоръчва да не се използва FILE_ID() , тъй като е в режим на поддръжка и може да бъде премахнат в бъдеща версия на SQL Server.

Така че, ако търсите бърз отговор коя функция да използвате, използвайте FILE_IDEX() .

Но ако се интересувате от разликата между тези две функции, прочетете нататък.

Разликата

Разликата между FILE_IDEX() и FILE_ID() е в връщаните типове.

  • FILE_IDEX() връща int .
  • FILE_ID() връща smallint .

Фактът, че FILE_IDEX() връща цяло число означава, че може да обработва по-големи идентификатори на файлове. Например, може да обработва каталози с пълен текст.

Малкиятит типът данни може да обработва само стойности до 32 767, докато int може да обработва стойности до 2,147,483,647. В SQL Server идентификационният номер на файла, присвоен на пълнотекстови каталози, надвишава 32 767 и следователно FILE_ID() не поддържа каталози с пълен текст.

Пример

Ето един бърз пример за демонстриране на ограниченията на FILE_ID() в сравнение с FILE_IDEX() :

ИЗПОЛЗВАЙТЕ WideWorldImportersDW;ИЗБЕРЕТЕ FILE_IDEX('WWIDW_InMemory_Data_1') КАТО [FILE_IDEX()], FILE_ID('WWIDW_InMemory_Data_1') КАТО [FILE_ID()];

Резултат:

<пред>+---------------+------------+| FILE_IDEX() | FILE_ID() ||--------------+------------|| 65537 | NULL |+---------------+------------+

В този случай идентификаторът на файла надвишава 32 767 и следователно FILE_ID() връща 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. Динамична въртяща се таблица в SQL Server

  2. Какво е LEN() в SQL Server?

  3. С ПРОВЕРКА НА ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ, последвано от ПРОВЕРКА НА ОГРАНИЧЕНИЕ спрямо ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ

  4. Деактивирайте SA акаунта в SQL Server (пример за T-SQL)

  5. SQL изберете къде не в подзаявката не връща резултати