sql >> データベース >  >> RDS >> Sqlserver

SQL ServerのFILE_ID()とFILE_IDEX()の違い:違いは何ですか?

    SQL Serverでは、FILE_IDEX()を使用できます。 指定されたデータベースファイルのIDを返す関数。 FILE_ID()を使用することもできます 同じことをする機能。どちらの関数もほぼ同じ目的を果たしますが、なぜT-SQLに両方の関数があるのですか?

    FILE_IDEX()のようです FILE_ID()の代わりになります 、およびより広範囲のファイルIDをサポートします。 Microsoftは現在、FILE_ID()の使用を推奨していません 、メンテナンスモードであり、SQLServerの将来のバージョンで削除される可能性があるためです。

    したがって、使用する関数の簡単な答えを探している場合は、FILE_IDEX()を使用してください。 。

    ただし、これら2つの機能の違いに興味がある場合は、読み進めてください。

    違い

    FILE_IDEX()の違い およびFILE_ID() リターンタイプにあります。

    • FILE_IDEX() intを返します 。
    • FILE_ID() smallintを返します 。

    FILE_IDEX()という事実 整数を返すということは、より大きなファイルIDを処理できることを意味します。たとえば、フルテキストカタログを処理できます。

    smallint データ型は32,767までの値しか処理できませんが、 int 最大2,147,483,647の値を処理できます。 SQL Serverでは、フルテキストカタログに割り当てられたファイルID番号が32,767を超えるため、FILE_ID() フルテキストカタログはサポートしていません。

    FILE_ID()の制限を示す簡単な例を次に示します。 FILE_IDEX()と比較した場合 :

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

    結果:

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

    この場合、ファイルIDは32,767を超えるため、FILE_ID() NULLを返します 。


    1. SqlCommandを使用して、パラメーター化されたデータベース名でデータベースを作成するにはどうすればよいですか?

    2. SQLiteケース

    3. 行から最大値を取得して別のテーブルに結合する

    4. MySqlSelectQueryでUTC日​​付をローカルタイムゾーンに変換する方法