MySQL WorkbenchでVARCHAR型をINT型に変換する方法
MySQLでVARCHAR型をINT型に変換するには、いくつかの方法があります。
方法
- CAST()関数
SELECT CAST(column_name AS INT) FROM table_name;
column_name
: 変換したいVARCHAR型カラム名table_name
: カラムが存在するテーブル名
例
SELECT CAST(age AS INT) FROM users;
この例では、users
テーブルのage
カラムをINT型に変換します。
- CONVERT()関数
SELECT CONVERT(column_name, SIGNED INTEGER) FROM table_name;
SELECT CONVERT(age, SIGNED INTEGER) FROM users;
- 暗黙的な型変換
MySQLは、式の中で必要に応じて暗黙的に型変換を行います。
SELECT age + 1 FROM users;
この例では、users
テーブルのage
カラムはVARCHAR型ですが、+
演算子の右側にある1
はINT型なので、age
カラムも暗黙的にINT型に変換されます。
注意事項
- VARCHAR型カラムに数値以外の文字が含まれている場合、変換結果はNULLになります。
- 変換後の値がINT型の範囲を超える場合、エラーが発生します。
補足
- 上記の方法以外にも、
UPDATE
文を使用してVARCHAR型カラムを直接INT型に変換することもできます。 - MySQL WorkbenchなどのGUIツールを使用すれば、GUI操作で簡単に型変換を行うことができます。
SELECT CAST(age AS INT) FROM users;
SELECT CONVERT(age, SIGNED INTEGER) FROM users;
SELECT age + 1 FROM users;
UPDATE文による直接変換
UPDATE users SET age = CAST(age AS INT);
MySQL WorkbenchによるGUI操作
- MySQL Workbenchでデータベースに接続します。
users
テーブルを開きます。age
カラムのデータ型をINTに変更します。- 変更を保存します。
- 上記のサンプルコードは、あくまでも参考例です。実際のコードは、環境に合わせて変更する必要があります。
その他のVARCHAR型をINT型に変換する方法
SELECT REPLACE(column_name, '[^0-9]', '') FROM table_name;
[^0-9]
: 数字以外の文字を表す正規表現
SELECT REPLACE(age, '[^0-9]', '') FROM users;
SUBSTRING()関数
SELECT SUBSTRING(column_name, 1, POSITION('-' IN column_name) - 1) FROM table_name;
-
: マイナス記号を表す
SELECT SUBSTRING(age, 1, POSITION('-' IN age) - 1) FROM users;
この例では、users
テーブルのage
カラムから最初のマイナス記号までの文字列を抽出します。
CASE式
SELECT CASE WHEN column_name REGEXP '[0-9]+$' THEN column_name END FROM table_name;
[0-9]+$
: 数字のみで構成される文字列を表す正規表現
SELECT CASE WHEN age REGEXP '[0-9]+$' THEN age END FROM users;
この例では、users
テーブルのage
カラムが数字のみで構成されている場合のみ、その値を抽出します。
mysql sql