MySQLで16進数を操作する方法とは?CONV()関数を使った基数変換を解説
MySQLで16進数を操作するには、CONV()関数を使用します。CONV()関数は、ある基数(進数)から別の基数へ数値を変換できる組み込み関数です。基本的な構文は以下の通りです。
SET anyVariableName = CONV(yourHexValue, 16, 10);
第1引数に変換したい値、第2引数に元の基数、第3引数に変換後の基数を指定します。上記の例では、16進数の値を10進数へ変換しています。
ストアドプロシージャで16進数を10進数に変換する
実際の動作を理解するために、16進数を10進数へ変換するストアドプロシージャを作成してみましょう。作成用のクエリは以下の通りです。
mysql> DELIMITER // mysql> CREATE PROCEDURE SP_HEX_TO_DEC( HEXVALUE VARCHAR(10) ) -> BEGIN -> DECLARE Decimalvalue INTEGER; -> SET Decimalvalue = CONV(HEXVALUE,16,10); -> select Decimalvalue; -> END; -> // Query OK, 0 rows affected (0.19 sec) mysql> DELIMITER ;
このストアドプロシージャは、引数として渡された16進数の値を10進数に変換して返します。16進数では「A」が10進数の「10」を表すため、ここでは「A」をパラメータとして渡してみます。
ストアドプロシージャの呼び出し方
ストアドプロシージャはCALLコマンドで呼び出します。構文は以下の通りです。
CALL yourStoredProcedureName;
先ほど作成したプロシージャを呼び出すクエリは次のようになります。
mysql> call SP_HEX_TO_DEC('A');実行結果は以下の通りです。ストアドプロシージャによって計算された10進数の値が表示されます。
+--------------+ | Decimalvalue | +--------------+ | 10 | +--------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
SELECT文で直接変換する方法
ストアドプロシージャを作らなくても、SELECT文でCONV()関数を直接実行すれば簡単に変換できます。
mysql> select conv('AB',16,10) as DecimalResult;実行結果は以下の通りです。
+---------------+ | DecimalResult | +---------------+ | 171 | +---------------+ 1 row in set (0.00 sec)
16進数から10進数への変換ルール
最後に、16進数がどのように10進数へ変換されるのか、その仕組みを確認しておきましょう。「AB」の場合、16進数におけるAとBはそれぞれ「10」と「11」を表します。10進数への変換は以下のルールに従います。
A と B は16進数でそれぞれ 10 と 11 を表します。 10進数への変換ルールは以下の通りです: N ……… +value3 × 162 + value2 × 161 + value1 × 160 = 10 × 161 + 11 × 160 = 160 + 11 = 171
つまり「AB」は「10×16+11×1=171」と計算され、CONV()関数の実行結果と一致します。このように、各桁の値に16のべき乗を掛けて合計することで、16進数を10進数へ変換できます。日常的にはCONV()関数を使えば自動的に変換されるため、覚えておくと非常に便利です。
-
PHPとMySQLで時刻を扱う方法|strtotime()とDATE_FORMAT()による形式変換
PHPで時刻形式を変換する方法 PHPで時刻データを扱う際、strtotime()関数を使えば、「8:55 PM」のような人間が読みやすい12時間制の表記を、データベースで扱いやすい24時間制(HH:MM:SS)へ簡単に変換できます。 PHPコード例 $timeValue = 8:55 PM; $changeTimeFormat = date(H:i:s, strtotime($timeValue)); echo(24時間制への変換結果=); echo($changeTimeFormat); このコードでは、まずstrtotime()が文字列「8:55 PM」をUNIXタイムスタンプに変換
-
MySQLでAUTO_INCREMENT列を扱う方法を徹底解説
MySQLでは、AUTO_INCREMENT属性を使うことで、新しい行に対して自動的に一意の番号(識別子)を割り当てることができます。本記事では、AUTO_INCREMENT列の基本的な使い方、動作の仕組み、そして利用時に守るべきルールについて、実例とともにわかりやすく解説します。基本的な使い方まずは、以下のクエリを見てみましょう。テーブルを作成し、データを挿入した結果を確認します。クエリ例CREATE TABLE tableName ( id MEDIUMINT NOT NULL AUTO_INCREMENT,