MySQLストアドプロシージャでNULLまたは空の変数をチェックする方法
MySQLのストアドプロシージャ内で、変数がNULLまたは空文字列であるかどうかを判定するには、IF条件を使用します。NULLチェックには「IS NULL」、空文字列のチェックには「= ''」を組み合わせることで、どちらのケースにも対応できます。
それでは、実際にストアドプロシージャを作成してみましょう。
mysql> delimiter //
mysql> create procedure checkingForNullDemo(Name varchar(20))
begin
if Name is NULL OR Name='' then
select 'Adam Smith';
else
select Name;
end if ;
end
//
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
このプロシージャでは、引数「Name」がNULLまたは空文字列の場合にデフォルト値として「Adam Smith」を返し、それ以外の場合は渡された値をそのまま返します。
ケース1:NULLを渡した場合
引数にNULLを指定して、CALLコマンドでストアドプロシージャを呼び出します。
mysql> call checkingForNullDemo(NULL);
実行結果は以下のとおりです。
+------------+
| Adam Smith |
+------------+
| Adam Smith |
+------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
NULLが渡されたため、IF条件が真と判定され、デフォルト値の「Adam Smith」が出力されました。
ケース2:値を渡した場合
次に、通常の文字列値を指定してCALLコマンドで呼び出します。
mysql> call checkingForNullDemo('John Doe');実行結果は以下のとおりです。
+----------+
| Name |
+----------+
| John Doe |
+----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
このように、有効な値が渡された場合は、ELSEブロックが実行され、入力された値「John Doe」がそのまま返されます。
ポイントまとめ
- NULL判定には「IS NULL」を使用する(「= NULL」では正しく判定できない)。
- 空文字列との両方をチェックしたい場合は、「OR Name = ''」のように条件を組み合わせる。
- ストアドプロシージャを作成する際は、あらかじめ「delimiter //」で区切り文字を変更し、作成後に「delimiter ;」で元に戻す。
-
MySQLでNULL値を1として表示・更新する方法
MySQLでは、テーブル内のNULL値を別の値(たとえば「1」)に置き換えて扱いたい場面があります。この記事では、IFNULL関数とUPDATE文を組み合わせて、NULL値を1に変換する具体的な手順をサンプルコード付きで解説します。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1963 ( Counter int ); Query OK, 0 rows affected (0.00 sec) 2. レコードを挿入する INSERT文を使って、NULLを含む複数のレコードを
-
MySQLストアドプロシージャでカラムの値を変数に格納する方法
MySQLのストアドプロシージャ内で変数を宣言するには、DECLARE文を使用します。さらにSELECT ~ INTO構文を組み合わせることで、テーブルのカラム値を変数に格納することができます。ここでは、実際にサンプルテーブルを作成し、ストアドプロシージャ経由でカラムの値を変数に取得する手順を解説します。1. サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable2034-> (-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,-> StudentN