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

MySQLでINT型カラムの値に含まれる「0」の個数を取得する方法

概要

MySQLでINT型として宣言されたカラムの値に含まれる「0」の個数を調べたい場合には、LENGTH()関数とREPLACE()関数を組み合わせるのが効果的です。「元の値の長さ」から「0をすべて取り除いた値の長さ」を引くことで、ゼロの出現回数を簡単に求めることができます。

それでは、実際の手順を見ていきましょう。

1. サンプルテーブルの作成

まず、テーブルを作成します。

mysql> create table DemoTable
(
    Value int
);
Query OK, 0 rows affected (1.22 sec)

2. レコードの挿入

INSERTコマンドを使用して、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable values(10002000);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(00000);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(400560);
Query OK, 1 row affected (0.19 sec)

3. レコードの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

上記のクエリを実行すると、次のような出力が得られます。

+----------+
| Value    |
+----------+
| 10002000 |
|        0 |
|   400560 |
+----------+
3 rows in set (0.00 sec)

4. ゼロの個数を取得するクエリ

以下のクエリを実行することで、各値に含まれる「0」の個数を取得できます。

mysql> select (length(Value)-length(replace(Value,'0',''))) AS NumberOfZeros from DemoTable;

実行結果は以下の通りです。

+---------------+
| NumberOfZeros |
+---------------+
|             6 |
|             1 |
|             3 |
+---------------+
3 rows in set (0.00 sec)

クエリの仕組み

このクエリがどのように機能しているのか、順を追って解説します。

  • length(Value):元の値を文字列として扱ったときの長さ(文字数)を取得します。
  • replace(Value, '0', ''):値に含まれるすべての「0」を空文字に置き換えます。
  • length(replace(...)):「0」を除去した後の文字数を取得します。

この2つの長さの差が、そのまま「0」が出現した回数になります。

例えば「10002000」の場合、全体の文字数は8文字、「0」を除去すると「12」となり2文字になるため、8 − 2 = 6個のゼロが含まれていることになります。

まとめ

LENGTH()とREPLACE()を組み合わせることで、INT型カラムの値に含まれる特定の文字(この場合は「0」)の出現回数をシンプルなクエリでカウントできます。このテクニックは、数値型だけでなく文字列型(VARCHARなど)のカラムにもそのまま応用できるので、覚えておくとさまざまな場面で役立ちます。

  1. JavaでMySQLテーブルのカラム数を取得・カウントする方法

    MySQLテーブルのカラム(列)数をJavaで取得するには、ResultSetMetaDataインターフェースを使用します。ResultSetMetaDataを活用すれば、カラムの総数だけでなく、各カラムの名前やデータ型といった詳細情報も簡単に取得できます。前提:サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。以下のSQLでは、3つのカラムを持つ「DemoTable」を作成しています。mysql> create table DemoTable     -> (     -> St

  2. MySQLでカスタム列に複数の値を設定する方法|UNION ALLの使い方を実例で解説

    はじめにMySQLでカスタム列(計算結果を出力する列)に複数の値を持たせたい場合、UNION ALLを利用すると簡単に実現できます。本記事では、実際にテーブルを作成し、UNION ALLを使って1つの列から複数の計算結果を取得する手順を、サンプルコードと実行結果あわせて詳しく解説します。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1987 ( UserValue int ); Query OK, 0 rows affected (2.90 sec)レコードの挿入INSERT文を使って、