引数に指定したインデックス番号が1未満の場合、MySQLのELT()関数は何を返しますか?
MySQLのELT()関数とは
MySQLのELT()関数は、第1引数に指定したインデックス番号に対応する文字列を、続く引数のリストから返す関数です。リストの先頭の文字列がインデックス番号1に対応し、以降2、3と続きます。
インデックス番号が1未満の場合の戻り値
引数として渡されたインデックス番号が1未満(0や負の数など)の場合、ELT()関数はNULLを返します。これは、ELT()関数の有効なインデックス範囲が1から始まるためです。
具体例
以下の例では、インデックス番号として0と-1をそれぞれ指定しています。
mysql> Select ELT(0,'Ram','is','a','good','boy') As Result; +--------+ | Result | +--------+ | NULL | +--------+ 1 row in set (0.00 sec) mysql> Select ELT(-1,'Ram','is','a','good','boy') As Result; +--------+ | Result | +--------+ | NULL | +--------+ 1 row in set (0.04 sec)
上記の2つの例では、いずれもインデックス番号が1未満であるため、MySQLはNULLを返しています。このように、範囲外のインデックス番号を指定してもエラーにはならず、NULLが返される点に注意してください。
-
MySQL INTERVAL()関数:引数リストに第1引数より大きい数値がない場合に返される値とは?
INTERVAL()関数の戻り値の挙動MySQLのINTERVAL()関数は、引数リストの中に第1引数より大きい数値がひとつも存在しない場合、「引数リスト内の最後の数値のインデックス番号+1」を返します。言い換えれば、リストの末尾のインデックス番号に1を加えた値が戻り値となるのです。具体的な動作例以下の例では、第1引数として「50」を指定し、比較対象の数値リストとして「20、32、38、40」を渡しています。このリストには50より大きい数値が存在しないため、関数は「4」を返します。mysql> Select INTERVAL(50,20,32,38,40); +-------------
-
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)