MySQLで列の数値を除算し、小数の結果を整数として表示する方法
MySQLでは、INT型の列を単純に除算すると、結果は自動的に小数(DECIMAL)として返されます。本記事では、まず通常の除算の挙動を確認し、その後、CAST関数を使って結果を整数として表示する方法を解説します。
1. サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Number int
-> );
Query OK, 0 rows affected (0.50 sec)
2. レコードの挿入
INSERTコマンドを使って、テーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable(Number) values(10);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Number) values(20);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(Number) values(30);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Number) values(40);
Query OK, 1 row affected (0.14 sec)
3. テーブルの内容を確認
SELECT文で、テーブル内のすべてのレコードを表示してみます。
mysql> select *from DemoTable;
出力結果
+----+--------+
| Id | Number |
+----+--------+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+----+--------+
4 rows in set (0.00 sec)
4. 通常の除算クエリ(結果が小数になる)
次に、Number列の値を2で割るクエリを実行します。
mysql> select Id,Number,(Number/2) AS DivideBy2 from DemoTable;
出力結果
MySQLでは「/」演算子による除算の結果が小数で返されるため、以下のように「5.0000」などの形式で表示されます。
+----+--------+-----------+
| Id | Number | DivideBy2 |
+----+--------+-----------+
| 1 | 10 | 5.0000 |
| 2 | 20 | 10.0000 |
| 3 | 30 | 15.0000 |
| 4 | 40 | 20.0000 |
+----+--------+-----------+
4 rows in set (0.00 sec)
5. CAST関数で結果を整数として表示する
小数点以下が不要な場合は、CAST関数とUNSIGNED型を組み合わせて、除算結果を整数に変換します。
mysql> select Id,Number,cast((Number/2) AS UNSIGNED) AS DivideBy2 from DemoTable;
出力結果
今度は、除算の結果が小数ではなく整数として表示されます。
+----+--------+-----------+
| Id | Number | DivideBy2 |
+----+--------+-----------+
| 1 | 10 | 5 |
| 2 | 20 | 10 |
| 3 | 30 | 15 |
| 4 | 40 | 20 |
+----+--------+-----------+
4 rows in set (0.00 sec)
補足:切り捨てと四捨五入の違い
CAST(... AS UNSIGNED)は小数点以下を切り捨てます。たとえば「15 / 2」の場合、7.5ではなく7が返されます。四捨五入したい場合は、ROUND()関数を併用してください。
mysql> select Id,Number,round(Number/2) AS DivideBy2 from DemoTable;
このように、MySQLで除算結果を整数として扱いたい場面では、用途に応じてCASTやROUNDを使い分けることで、期待どおりの出力を得ることができます。
-
MySQLでテーブル内の各レコードの出現回数をカウントし、結果を新しい列として表示する方法
MySQLのテーブル内で同じ値が何回出現するかをカウントし、その結果を新しい列として表示したい場合があります。このような集計処理には、COUNT(*)関数とGROUP BY句を組み合わせて使用します。 サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable1942 ( Value int ); Query OK, 0 rows affected (0.00 sec) INSERTコマンドを使って、いくつかのレコードを挿入します。 mysql> insert into DemoTable
-
MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法
はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036