MySQLで空の16進値を数値に変換すると何が返される?動作を解説
MySQLにおける空の16進値の数値変換
MySQLでは、空の16進値(X'')は長さゼロのバイナリ文字列として扱われます。そのため、この値に0を加算すると、結果はそのまま0になります。言い換えれば、空の16進値を数値に変換した場合、MySQLは必ず「0」を返すということです。
実際の動作を確認するクエリ
以下のSQLクエリを実行すると、この挙動を簡単に確認できます。
mysql> SELECT X''+ 0;
+--------+
| X''+ 0 |
+--------+
| 0 |
+--------+
1 row in set (0.15 sec)
動作の解説
X'' は空の16進リテラルを表します。MySQLはこれを空のバイナリ文字列とみなし、数値コンテキストで評価される際には自動的に0へと変換します。そのため、0を加算しても値は変化せず、結果として0が出力されます。
この仕様を理解しておくと、16進データやバイナリデータを数値演算で扱う際に、予期しない結果を避けるのに役立ちます。特に、空の入力値が混ざる可能性があるカラムを処理する場合は、この挙動を踏まえた設計・検証をおすすめします。
-
【MySQL】空の値(空文字列)をNULLに変換するUPDATEクエリの書き方
MySQLでは、UPDATE文のSET句とWHERE句を組み合わせるだけで、カラムに入っている空の値(空文字列)をNULLへ簡単に変換できます。ここからは、実際のサンプルを使って手順を詳しく解説していきます。 1. サンプルテーブルを作成する まず、以下のコマンドでテーブルを作成しましょう。 mysql> create table DemoTable1315 -> ( -> CountryName varchar(10) -> ); Query OK, 0 rows affected (0.60 sec) 2. レコードを挿入する 次に、INSERTコマンドでレコー
-
C++で整数を16進数文字列に変換する方法
整数が与えられたとき、それを16進数の文字列に変換するアルゴリズムを設計します。負の数を扱う場合は、2の補数(twos complement)の方式を用いて処理します。 例えば、入力が 254 と -12 であれば、出力はそれぞれ「fe」と「fffffff4」になります。 解法のアルゴリズム この問題は、以下の手順に従って解くことができます。 num1 が 0 と等しい場合は、「0」を返します。 num := num1 とします。 s := 空の文字列 とします。 num が 0 でない間、次の処理を繰り返します。 temp := num mod 16(num を 16 で割った余り)と