MySQLのCONV()関数でNULL引数を指定した場合の戻り値はどうなる?
MySQLでは、CONV()関数の引数のいずれかにNULLが指定された場合、あるいは基数(進数)として指定した値が許容範囲外(最小値2〜最大値36の間にない)である場合、関数は結果としてNULLを返します。
NULLが返されるケース
- 変換対象の数値がNULLの場合
- 現在の基数がNULLの場合
- 変換後の基数がNULLの場合
- 基数が2未満または36超の場合
以下の具体例で、それぞれのケースにおける動作を確認できます。
実行例
mysql> Select CONV(10,NULL,2); +-----------------+ | CONV(10, NULL,2)| +-----------------+ | NULL | +-----------------+ 1 row in set (0.00 sec) mysql> Select CONV(10,10, NULL); +------------------+ | CONV(10,10, NULL)| +------------------+ | NULL | +------------------+ 1 row in set (0.00 sec) mysql> Select CONV(NULL,10,2); +-----------------+ | CONV(null,10,2) | +-----------------+ | NULL | +-----------------+ 1 row in set (0.00 sec)
上記の例からわかるように、3つの引数のうちどれがNULLであっても、結果は常にNULLとなります。これはSQL標準の三値論理(NULL伝播)に従った挙動です。
なお、基数に無効な値を指定した場合も同様にNULLが返されるため、アプリケーション側でユーザー入力を基数として扱う際には、事前に値の妥当性チェックを行うことをおすすめします。
-
MySQLのCHAR()関数にNULLを渡すとどうなる?NULL引数の挙動を解説
MySQLのCHAR()関数はNULLを無視するMySQLのCHAR()関数に、引数としてNULLが含まれていた場合、そのNULLは自動的に無視(スキップ)されます。エラーにはならず、残りの数値だけが文字列へ変換されるのが特徴です。実際の動作を、以下の例で確認してみましょう。例1:末尾にNULLを指定した場合mysql> Select CHAR(65,66,67,NULL); +---------------------+ | CHAR(65,66,67,NULL) | +---------------------+ | ABC | +----------
-
MySQLのINTERVAL()関数で第1引数にNULLを指定した場合の戻り値とは?
INTERVAL()関数の第1引数がNULLだった場合の戻り値MySQLのINTERVAL()関数は、第1引数と残りの引数リストを比較し、第1引数の値がどこまで続く範囲に該当するかを示すインデックスを返す関数です。そして重要なポイントとして、第1引数にNULLを指定した場合、戻り値は必ず-1になります。実際の動作を以下の例で確認してみましょう。mysql> Select INTERVAL(NULL,20,32,38,40,50,55);+--------------------------------------+| INTERVAL(NULL,20,32,38,40,50,55)