こんにちは。たいら(@tairaengineer2)です。
この記事では、SQL Serverでテーブルの存在チェックをするやり方について解説します。
スポンサーリンク
- 前提条件
- テーブルの存在チェックをするやり方
- OBJECT_ID関数とは
- 解説で使うテーブル
- サンプル1:【House】テーブルの存在チェック
- サンプル2:【Dog】テーブルの存在チェック
- まとめ:テーブルの存在チェックをするときはOBJECT_ID関数を使おう!
前提条件
この記事では、Microsoft SQL Server2017を使っています。
インストールの仕方は、下の記事をご参考ください。
テーブルの存在チェックをするやり方
テーブルの存在チェックをするやり方は、下記のように書きます。
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】テーブルです。
【House】テーブルの存在チェックと、【Sample】データベースには存在しない【Dog】テーブルの存在チェックを実施します。
存在したかどうかを結果に出力します。
サンプル1:【House】テーブルの存在チェック
【House】テーブルの存在チェックは、下記のように書きます。
IF OBJECT_ID (N'House', N'U') IS NOT NULL
SELECT 'Houseテーブルが存在する';
ELSE
SELECT 'Houseテーブルは存在しない'
結果は下記になります。
(列名なし) |
---|
Houseテーブルが存在する |
【House】テーブルが存在していることが確認できました!
サンプル2:【Dog】テーブルの存在チェック
【Dog】テーブルの存在チェックは、下記のように書きます。
IF OBJECT_ID (N'Dog', N'U') IS NOT NULL
SELECT 'Dogテーブルが存在する';
ELSE
SELECT 'Dogテーブルは存在しない'
結果は下記になります。
(列名なし) |
---|
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の解説記事のまとめは、こちらをご参考ください。