MySQLのCONV()関数における基数の下限と上限とは?範囲外の基数を指定した場合はどうなる?
MySQLのCONV()関数では、基数(ベース)は2以上36以下の範囲内で指定する必要があります。つまり、基数の下限は「2」、上限は「36」となります。この制限は、変換元の基数(from_base)と変換先の基数(to_base)の両方に適用されます。
万が一、この範囲外の値を基数として指定した場合、MySQLはエラーを発生させるのではなく、NULLを出力として返します。以下の具体例でその動作を確認してみましょう。
例1:to_baseに上限(36)を超える値「38」を指定した場合
mysql> Select CONV(10,10,38); +----------------+ | CONV(10,10,38) | +----------------+ | NULL | +----------------+ 1 row in set (0.00 sec)
例2:from_baseに上限(36)を超える値「72」を指定した場合
mysql> Select CONV(10,72,2); +---------------+ | CONV(10,72,2) | +---------------+ | NULL | +---------------+ 1 row in set (0.00 sec)
例3:下限(2)未満の値「1」を指定した場合
mysql> Select CONV(10,10,1); +---------------+ | CONV(10,10,1) | +---------------+ | NULL | +---------------+ 1 row in set (0.00 sec)
まとめ
- CONV()関数の基数は必ず2〜36の範囲で指定すること。
- from_base・to_baseのどちらに範囲外の値を指定しても結果は同じ。
- エラーではなくNULLが返されるため、アプリケーション側でのNULLチェックが重要。
-
MySQLのISNULL()関数とIS NULL演算子の違いとは?使い方を例付きで解説
MySQLにおけるISNULL()関数とIS NULL演算子の違い結論から言うと、ISNULL()関数とIS NULL演算子に機能上の大きな違いはありません。どちらもNULL値を判定するためのもので、基本的な動作は共通しています。両者の唯一の違いは構文(書き方)にあります。ISNULL()関数:判定したい式を引数として渡す(例:ISNULL(expr))IS NULL演算子:判定したい式を演算子の左側に記述する(例:expr IS NULL)動作については、どちらも式がNULLであれば「1」を返し、NULLでなければ「0」を返します。WHERE句で使用した場合も、まったく同じ結果が得られます。
-
MySQLのストアドプロシージャとストアドファンクション(関数)の違いとは?
MySQLでは、データベース内に処理を格納しておく仕組みとして「ストアドプロシージャ」と「ストアドファンクション(関数)」の2つが用意されています。どちらもSQL文の集合をまとめて再利用できる便利な機能ですが、呼び出し方や戻り値の扱いなどに明確な違いがあります。 ストアドプロシージャ(Stored Procedure) ストアドプロシージャは、CALLステートメントを使って明示的に呼び出す必要があります。 主な特徴は以下のとおりです。 複数の値を返せる:OUTパラメータやINOUTパラメータを使うことで、1回の実行で複数の結果を受け取ることができます。 デフォルトの戻り値は0:特に何も指定し