MySQLのDECIMAL型をINT型へ変換:知っておくべきベストプラクティス
MySQLにおけるDECIMAL型をINT型へ変換する方法
FLOOR関数を使用する
FLOOR関数は、小数点以下の部分を切り捨てて整数部分を返します。この関数を利用することで、DECIMAL型のデータをINT型に変換することができます。
SELECT FLOOR(columnName) FROM yourTable;
上記のクエリは、yourTable
テーブルのcolumnName
列の値をすべて取得し、小数点以下の部分を切り捨てて整数部分のみを返します。
例:
columnName | 結果 |
---|---|
12.34 | 12 |
56.78 | 56 |
-9.01 | -9 |
CAST関数とFORMAT関数を使用する
CAST関数は、あるデータ型を別のデータ型に変換する関数です。FORMAT関数は、数値を指定された書式で表示する関数です。
これらの関数を組み合わせて、DECIMAL型データをINT型に変換することができます。
SELECT CAST(FORMAT(columnName, 0) AS SIGNED) FROM yourTable;
columnName | 結果 |
---|---|
12.34 | 12 |
56.78 | 56 |
-9.01 | -9 |
補足:
- 上記の方法は、小数点以下の値が0でない場合、切り捨てによって元の値と異なる値になることに注意が必要です。
- より精度の高い変換が必要な場合は、ROUND関数とCAST関数を使用する方法もあります。
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
salary DECIMAL(10,2) NOT NULL
);
INSERT INTO employees (name, salary) VALUES
('Alice', 1234.56),
('Bob', 7890.12),
('Charlie', 4321.00);
SELECT id, name, salary, CAST(FORMAT(salary, 0) AS SIGNED) AS new_salary
FROM employees;
出力結果:
id | name | salary | new_salary
----+-------+--------+------------
1 | Alice | 1234.56 | 1234
2 | Bob | 7890.12 | 7890
3 | Charlie | 4321.00 | 4321
解説:
- 最初の
CREATE TABLE
ステートメントは、employees
という名前のテーブルを作成します。このテーブルには、id
、name
、salary
という3つの列があります。id
列はプライマリキーで、自動的にインクリメントされます。name
列は文字列型で、最大長は255文字です。salary
列はDECIMAL型で、小数点以下の桁数は2桁です。 - 2番目の
INSERT INTO
ステートメントは、employees
テーブルに3つのレコードを挿入します。各レコードには、従業員の名前と給与が含まれています。 - 3番目の
SELECT
ステートメントは、employees
テーブルのすべてのレコードを取得し、id
、name
、salary
、new_salary
という4つの列を表示します。new_salary
列は、salary
列の値をINT型に変換した結果です。
このサンプルコードは、DECIMAL型データをINT型に変換する方法を理解するための参考としてご活用ください。
- 上記のサンプルコードは、MySQL 8.0を使用しています。他のバージョンのMySQLを使用している場合は、構文が異なる場合があります。
- サンプルコードでは、
FORMAT
関数とCAST
関数を組み合わせてDECIMAL型データをINT型に変換しています。この方法は、小数点以下の値が0でない場合、切り捨てによって元の値と異なる値になることに注意が必要です。より精度の高い変換が必要な場合は、ROUND関数とCAST関数を使用する方法もあります。
MySQLでDECIMAL型をINT型に変換するその他の方法
CEILING関数を使用する
SELECT CEILING(columnName) FROM yourTable;
columnName | 結果 |
---|---|
12.34 | 13 |
56.78 | 57 |
-9.01 | -9 |
ROUND関数とCAST関数を使用する
ROUND関数は、数値を指定された桁数に丸めます。この関数とCAST関数を使用することで、DECIMAL型データをINT型に変換することができます。
SELECT CAST(ROUND(columnName, 0) AS SIGNED) FROM yourTable;
columnName | 結果 |
---|---|
12.34 | 12 |
56.78 | 56 |
-9.01 | -9 |
CONVERT関数を使用する
CONVERT関数は、あるデータ型を別のデータ型に変換する関数です。この関数を使用して、DECIMAL型データをINT型に変換することができます。
SELECT CONVERT(columnName, SIGNED) FROM yourTable;
columnName | 結果 |
---|---|
12.34 | 12 |
56.78 | 56 |
-9.01 | -9 |
SELECT CAST(SUBSTRING(columnName, 1, LENGTH(columnName) - 2) AS SIGNED) FROM yourTable;
columnName | 結果 |
---|---|
12.34 | 12 |
56.78 | 56 |
-9.01 | -9 |
注意事項:
- 上記の方法を使用する場合は、変換によって元の値と異なる値になる可能性があることに注意が必要です。
- 変換後のデータの精度が重要である場合は、適切な方法を選択する必要があります。
mysql