MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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で除算結果を整数として扱いたい場面では、用途に応じてCASTROUNDを使い分けることで、期待どおりの出力を得ることができます。

  1. MySQLでテーブル内の各レコードの出現回数をカウントし、結果を新しい列として表示する方法

    MySQLのテーブル内で同じ値が何回出現するかをカウントし、その結果を新しい列として表示したい場合があります。このような集計処理には、COUNT(*)関数とGROUP BY句を組み合わせて使用します。 サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable1942 ( Value int ); Query OK, 0 rows affected (0.00 sec) INSERTコマンドを使って、いくつかのレコードを挿入します。 mysql> insert into DemoTable

  2. MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法

    はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036