ゲーマーときどきエンジニア

基本ゲーム記事を書いて、ときどき考えを発信するエンジニアのブログです!

【SQL Server】テーブルの存在チェックするやり方を解説します

こんにちは。たいら(@tairaengineer2)です。
この記事では、SQL Serverテーブルの存在チェックをするやり方について解説します。

スポンサーリンク

 

前提条件

この記事では、Microsoft SQL Server2017を使っています。
インストールの仕方は、下の記事をご参考ください。

www.tairax.com

テーブルの存在チェックをするやり方

テーブルの存在チェックをするやり方は、下記のように書きます。

IF OBJECT_ID (N'テーブル名', N'U') IS NOT NULL  
	「テーブルが見つかったときの処理」
ELSE
	「テーブルが見つからなかったときの処理」

赤太字で書いているところを、存在チェックしたいテーブル名に変更してもらえればそれでOKです!
第二引数に【N'U'】を指定していますが、ここは固定です。
なぜ【N'U'】を指定しているのかはのちほど解説します。

次章で存在チェックをしている【OBJECT_ID】関数について解説します。

OBJECT_ID関数とは

指定したオブジェクト名とオブジェクトタイプでオブジェクトIDが存在するかをチェックする関数です。
存在しなければNULLが返ってきます。

スキーマ スコープ オブジェクトのデータベース オブジェクト ID 番号を返します。

OBJECT_ID (Transact-SQL) - SQL Server | Microsoft Docsから引用させて頂きました

OBJECT_ID関数に指定する引数は

  • 第一引数:オブジェクト名
  • 第二引数:オブジェクトタイプ

先ほど第二引数に【N'U'】を指定していた理由ですが、オブジェクトタイプを指定していたためです。
【N'U'】はテーブルを表すので、【N'U'】と指定していました。

では、次の章で実際にテーブルの存在チェックを行っていきます!

解説で使うテーブル

解説で実際に使うテーブルは、【Sample】データベースの【House】テーブルです。

f:id:Tairax:20200122115145p:plain

【House】テーブルの存在チェックと、【Sample】データベースには存在しない【Dog】テーブルの存在チェックを実施します。
存在したかどうかを結果に出力します。

サンプル1:【House】テーブルの存在チェック

【House】テーブルの存在チェックは、下記のように書きます。

IF OBJECT_ID (N'House', N'U') IS NOT NULL  
	SELECT 'Houseテーブルが存在する';  
ELSE
	SELECT 'Houseテーブルは存在しない'

結果は下記になります。

f:id:Tairax:20200122115927p:plain

(列名なし)
Houseテーブルが存在する

【House】テーブルが存在していることが確認できました!

サンプル2:【Dog】テーブルの存在チェック

【Dog】テーブルの存在チェックは、下記のように書きます。

IF OBJECT_ID (N'Dog', N'U') IS NOT NULL  
	SELECT 'Dogテーブルが存在する';  
ELSE
	SELECT 'Dogテーブルは存在しない'

結果は下記になります。

f:id:Tairax:20200122120344p:plain

(列名なし)
Dogテーブルは存在しない

【Dog】テーブルが存在しないことが確認できました!

 

スポンサーリンク

 

まとめ:テーブルの存在チェックをするときはOBJECT_ID関数を使おう!

以上がテーブルの存在チェックのやり方の解説です。
まとめなので、もう1度振り返ります。

IF OBJECT_ID (N'テーブル名', N'U') IS NOT NULL  
	「テーブルが見つかったときの処理」
ELSE
	「テーブルが見つからなかったときの処理」

テーブルの存在チェックをするとき、ぜひ使ってみてください!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

 

他にもSQL Serverについて記事を書いています。
良ければこちらもご参考ください。

【SQL Server】テーブルの列名を変更するsp_renameを解説します

【SQL Server】大文字から小文字に変換するLOWER関数について解説します

 

今までブログで書いたSQL Serverの解説記事のまとめは、こちらをご参考ください。

【SQL Server】ブログで書いた使い方記事のまとめ