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

FILE_ID() vs FILE_IDEX() v SQL Server:Jaký je rozdíl?

V SQL Server můžete použít FILE_IDEX() funkce pro vrácení ID daného databázového souboru. Můžete také použít FILE_ID() funkce dělat to samé. Obě funkce slouží téměř ke stejnému účelu, tak proč má T-SQL obě funkce?

Zdá se, že FILE_IDEX() je náhradou za FILE_ID() a podporuje větší rozsah ID souborů. Společnost Microsoft nyní nedoporučuje používat FILE_ID() , protože je v režimu údržby a může být odstraněn v budoucí verzi SQL Server.

Pokud tedy hledáte rychlou odpověď na to, kterou funkci použít, použijte FILE_IDEX() .

Pokud vás ale zajímá rozdíl mezi těmito dvěma funkcemi, čtěte dále.

Rozdíl

Rozdíl mezi FILE_IDEX() a FILE_ID() je v návratových typech.

  • FILE_IDEX() vrátí int .
  • FILE_ID() vrátí smallint .

Skutečnost, že FILE_IDEX() vrátí celé číslo znamená, že dokáže zpracovat větší ID souborů. Poradí si například s fulltextovými katalogy.

Malý datový typ dokáže zpracovat pouze hodnoty do 32 767, zatímco int zvládne hodnoty až do 2 147 483 647. Na serveru SQL Server identifikační číslo souboru přiřazené fulltextovým katalogům přesahuje 32 767, a proto FILE_ID() nepodporuje fulltextové katalogy.

Příklad

Zde je rychlý příklad demonstrující omezení FILE_ID() ve srovnání s FILE_IDEX() :

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

Výsledek:

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

V tomto případě ID souboru přesahuje 32 767, a proto FILE_ID() vrátí NULL .


  1. Oracle:exportujte tabulku s objekty BLOB do souboru .sql, který lze znovu importovat

  2. Proaktivní monitorování MySQL (Developer Studio/Advisors Angle)

  3. SQL Server REPLACE() vs TRANSLATE():Jaké jsou rozdíly?

  4. SQL dotaz pro nalezení N-tého nejvyššího platu z tabulky platů