MySQLのASCII()関数に空文字列を渡した場合、何が返される?
MySQLのASCII()関数に引数として空文字列('')を指定した場合、戻り値は 0 になります。
ASCII()関数は通常、文字列の左端の文字に対応する数値コード(ASCIIコード)を返しますが、空文字列には評価対象となる文字が存在しないため、結果として0が返される仕組みです。
例
mysql> Select ASCII('');
+-----------+
| ASCII('') |
+-----------+
| 0 |
+-----------+
1 row in set (0.00 sec)補足:NULLを指定した場合との違い
なお、空文字列ではなくNULLを渡した場合には、0ではなくNULLが返される点に注意してください。
mysql> Select ASCII(NULL); +-------------+ | ASCII(NULL) | +-------------+ | NULL | +-------------+ 1 row in set (0.00 sec)
このように、ASCII()関数の扱いにおいて「空文字列」と「NULL」では挙動が異なるため、クエリを記述する際は引数の中身を意識しておくことが重要です。
-
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)
-
MySQLのINTERVAL()関数とは?構文と戻り値の仕組みを実例付きで解説
MySQLのINTERVAL()関数は、第1引数とそれ以降の複数の引数を比較し、「第1引数より大きい値」が最初に現れる位置(インデックス)を返す関数です。複数の閾値と一度に大小比較を行いたい場合などに活用できます。 INTERVAL()関数の構文 INTERVAL(N, N1, N2, N3, …) この関数は、第1引数であるNを、残りの引数であるN1、N2、N3…と順番に比較していきます。すべての引数は整数として扱われ、比較結果に応じて以下のような値を返します。 N < N1 の場合 → 0 を返す N < N2 の場合 → 1 を返す N < N3 の場合 → 2