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 | +---------------------+ 1 row in set (0.00 sec)
この例では、65・66・67という数値がそれぞれ「A」「B」「C」に変換され、最後のNULLは単純に無視されています。
例2:先頭と末尾にNULLを指定した場合
mysql> Select CHAR(NULL,66,67,NULL); +-----------------------+ | CHAR(NULL,66,67,NULL) | +-----------------------+ | BC | +-----------------------+ 1 row in set (0.00 sec)
こちらの例では、先頭と末尾の両方にNULLを指定していますが、結果は「BC」となり、NULL以外の数値(66・67)のみが文字列に変換されました。
まとめ
このように、CHAR()関数は引数の中にNULLが含まれていてもエラーを返さず、NULLを除外した上で、残りの数値を対応する文字コードの文字列に変換します。データにNULLが混在する可能性がある場合でも、安心して利用できる挙動といえます。
-
MySQLの<=>演算子とは?NULL安全な等価比較の使い方を解説
MySQLには、NULL値も安全に比較できる特殊な等価演算子 <=>(NULL安全等価演算子)が用意されています。この記事では、<=> 演算子の動作と、通常の = 演算子との違いを具体例とともに解説します。 ケース1:通常の値の比較(= 演算子と同じ動作) <=> 演算子は、NULL以外の値同士を比較する場合、= 演算子とまったく同じように動作します。つまり、両辺の値が等しければ「1(TRUE)」、等しくなければ「0(FALSE)」を返します。 たとえば、次のような比較では、どちらの演算子でも結果は同じになります。 mysql> SELECT 10
-
MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説
MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字