MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのMAKE_SET()関数がNULLを返すのはどのような場合か?

MySQLのMAKE_SET()関数は、第1引数に指定したビット値そのものがNULLである場合に、結果としてNULLを返します。一方、文字列側の引数にNULLが含まれていても、それらは単に無視されるだけで、エラーにはなりません。

MAKE_SET()関数は、第1引数のビット値をもとに、対応する位置の文字列をカンマ区切りで連結して返す関数です。どのような条件でNULLが返るのか、具体的な実行例を見ていきましょう。

例1:第1引数(ビット値)がNULLの場合

mysql> Select MAKE_SET(NULL, 'A','B','C');
+-----------------------------+
| MAKE_SET(NULL, 'A','B','C') |
+-----------------------------+
| NULL                        |
+-----------------------------+
1 row in set (0.00 sec)

この例では、ビット値となる第1引数がNULLです。どの文字列を選択すればよいか判断できないため、関数全体の戻り値がNULLになります。

例2:文字列側にNULLが含まれる場合

mysql> Select MAKE_SET(2, NULL,'B',NULL);
+----------------------------+
| MAKE_SET(2, NULL,'B',NULL) |
+----------------------------+
| B                          |
+----------------------------+
1 row in set (0.00 sec)

この例では、ビット値が「2」(バイナリで10)であるため、2番目の文字列「B」が選択されます。1番目と3番目のNULLは無視され、結果は「B」となります。

まとめ

  • 第1引数(ビット値)がNULLの場合 → 結果はNULLになる
  • 選択対象の文字列にNULLが含まれる場合 → そのNULLは無視され、残りの文字列だけで結果が構成される

このように、MAKE_SET()関数におけるNULLの扱いは、引数の位置によって挙動が異なる点に注意が必要です。

  1. MySQLで入力がNULLの場合にDATE_FORMATからNULLを返す方法

    MySQLで入力がNULLの場合にDATE_FORMATからNULLを返す方法 MySQLでは、IF()関数を組み合わせることで、日付カラムの値がNULLの場合にDATE_FORMAT関数の結果としてNULLを返すことができます。NULLデータを含むテーブルでも、意図どおりに日付を安全にフォーマットできる便利なテクニックです。 基本構文 構文は以下のとおりです。 SELECT IF(対象の日付カラム, DATE_FORMAT(対象の日付カラム, %d/%m/%Y), NULL) FROM テーブル名; IF()関数は、第1引数の条件が真(NULL以外の有効な値)であれば第2引数を返し、条件が

  2. MySQLでNULLの値を別の列に0として表示する方法(CASE文の使い方)

    MySQLでは、カラムの値がNULLである場合に、SELECT文の結果として新しい列に0を返したいケースがよくあります。例えば、価格データの欠損値を集計や表示のために0として扱いたい場合などです。このような場合には、CASE文を使用するのが最も基本的な方法です。CASE文を使うことで、条件に応じて異なる値を返すことができます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable703 (Price int); Query OK, 0 rows affected (0.46 sec)2. テストデータを挿入す