MySQLで文字列をBIGINT型にキャストする方法|CONV()関数とCAST演算子の使い方
MySQLでは、CAST演算子とCONV()関数を組み合わせることで、文字列をBIGINT型(符号なし整数)に変換できます。CONV()関数は、ある基数の数値を別の基数の数値へ変換するための関数です。
例えば、基数「16」は16進数(ヘキサデシマル)、基数「10」は10進数(デシマル)を表します。つまり、16進数の文字列を10進数の整数値に変換できるのです。
基本構文
構文は以下の通りです。
SELECT CAST(CONV('yourColumnName',16,10) AS UNSIGNED INTEGER) as anyAliasName FROM yourTableName;実際にテーブルを作成して確認してみよう
構文の動作を理解するために、まずテーブルを作成します。
mysql> create table castTypeToBigIntDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Value varchar(100),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (1.19 sec)次に、INSERTコマンドを使っていくつかのレコードを挿入します。
mysql> insert into castTypeToBigIntDemo(Value) values('AB5');
Query OK, 1 row affected (0.13 sec)
mysql> insert into castTypeToBigIntDemo(Value) values('55244A5562C5566354');
Query OK, 1 row affected (0.15 sec)
mysql> insert into castTypeToBigIntDemo(Value) values('4546575765ABD78');
Query OK, 1 row affected (0.15 sec)
mysql> insert into castTypeToBigIntDemo(Value) values('5979787DEFAB');
Query OK, 1 row affected (0.19 sec)
mysql> insert into castTypeToBigIntDemo(Value) values('86868686856ABD');
Query OK, 1 row affected (0.17 sec)SELECT文ですべてのレコードを表示して確認しましょう。
mysql> select *from castTypeToBigIntDemo;
実行結果は以下の通りです。
+----+--------------------+ | Id | Value | +----+--------------------+ | 1 | AB5 | | 2 | 55244A5562C5566354 | | 3 | 4546575765ABD78 | | 4 | 5979787DEFAB | | 5 | 86868686856ABD | +----+--------------------+ 5 rows in set (0.00 sec)
BIGINT型へのキャストを実行する
それでは、MySQLで型をBIGINTにキャストするクエリを見てみましょう。
mysql> SELECT CAST(CONV(Value,16,10) AS UNSIGNED INTEGER) as BigNumber from castTypeToBigIntDemo;
実行結果は以下の通りです。
+----------------------+ | BigNumber | +----------------------+ | 2741 | | 18446744073709551615 | | 311985829366644088 | | 98378247434155 | | 37865559219858109 | +----------------------+ 5 rows in set, 1 warning (0.00 sec)
ポイントのまとめ
- CONV(値, 16, 10) により、16進数の文字列が10進数の数値に変換されます。
- CAST(... AS UNSIGNED INTEGER) により、結果が符号なしBIGINT型として扱われます。
- 符号なしBIGINTの最大値は 18446744073709551615 です。この範囲を超える値は最大値に丸められ、警告(warning)が出力される点に注意してください。
上記の出力例では、2番目のレコード「55244A5562C5566354」が符号なしBIGINTの上限値に達しているため、「1 warning」が表示されています。大きな値を扱う場合は、変換後の桁数にも留意しておきましょう。
-
MySQLのSOUNDEX()関数を使って発音が似た文字列を検索する方法
SOUNDEX()関数とはMySQLのSOUNDEX()関数は、文字列からサウンドex(Soundex)コードと呼ばれる音声表現の文字列を返します。Soundexは、英語の発音の類似性に基づいて文字列をインデックス化するアルゴリズムで、発音がほぼ同じ2つの文字列は、同一のSoundexコードを持つという特徴があります。この特性を活かすことで、スペルは異なるが発音が似ている名前や単語を効率的に検索できます。SOUNDEX()を使用したクエリの基本構文MySQLでSOUNDEX()を使って検索するには、以下のような構文を使用します。SELECT * FROM テーブル名 WHERE SOUNDEX
-
1つのMySQLクエリで複数のカラムのデータ型を変更する方法
MySQLでは、ALTER TABLE文を使うことで、テーブルのカラム定義を後から変更できます。複数のカラムのデータ型を一度に変更したい場合も、1つのクエリでまとめて実行可能です。基本構文単一のクエリで複数のカラムの型を変更するには、以下のように MODIFY COLUMN をカンマで区切って並べます。ALTER TABLE テーブル名 MODIFY COLUMN カラム名1 データ型1, MODIFY COLUMN カラム名2 データ型2, . . N;サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable (