1. ホーム
  2. sql-server

[解決済み] SQL Server にテーブルが存在するかどうかを確認する

2022-03-21 07:29:44

質問

SQL Server 2000/2005でSQLステートメントを使用してテーブルが存在するかどうかを確認する方法についての究極の議論であって欲しいです。

ググってみると、実に様々な答えが返ってきます。公式/後方互換/前方互換の方法はあるのでしょうか?

ここに2つの方法が考えられます。どちらが標準的な方法なのでしょうか?

第一の方法

IF EXISTS (SELECT 1 
           FROM INFORMATION_SCHEMA.TABLES 
           WHERE TABLE_TYPE='BASE TABLE' 
           AND TABLE_NAME='mytablename') 
   SELECT 1 AS res ELSE SELECT 0 AS res;

第二の方法

IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL 
   SELECT 1 AS res ELSE SELECT 0 AS res;

MySQL は、シンプルな

SHOW TABLES LIKE '%tablename%'; 

ステートメントを使用しています。似たようなものを探しています。

どのように解決するのですか?

このようなクエリでは、常に INFORMATION_SCHEMA ビューを使用します。 これらのビューは、多くの異なるデータベースで(ほとんど)標準となっており、バージョンごとに変更されることはほとんどありません。

テーブルが存在するかどうかを確認するには、次のようにします。

IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'TheSchema' 
                 AND  TABLE_NAME = 'TheTable'))
BEGIN
    --Do Stuff
END