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

MySQLで小数点以下2桁を超える行を抽出する方法

MySQLで小数点以下2桁を超える値を持つ行を抽出したい場合は、SUBSTR()関数を活用します。まずはサンプル用のテーブルを作成しましょう。

mysql> create table selectRows2DecimalPlacesDemo
   -> (
   -> Amount varchar(100)
   -> );
Query OK, 0 rows affected (0.73 sec)

次に、INSERTコマンドを使ってテーブルにレコードを挿入します。

mysql> insert into selectRows2DecimalPlacesDemo values('234.5678');
Query OK, 1 row affected (0.17 sec)
mysql> insert into selectRows2DecimalPlacesDemo values('19.50');
Query OK, 1 row affected (0.19 sec)
mysql> insert into selectRows2DecimalPlacesDemo values('23.456');
Query OK, 1 row affected (0.17 sec)
mysql> insert into selectRows2DecimalPlacesDemo values('12.123');
Query OK, 1 row affected (0.14 sec)

SELECT文でテーブル内のすべてのレコードを確認してみましょう。

mysql> select * from selectRows2DecimalPlacesDemo;

実行すると、以下のような結果が得られます。

+----------+
| Amount   |
+----------+
| 234.5678 |
| 19.50    |
| 23.456   |
| 12.123   |
+----------+
4 rows in set (0.00 sec)

小数点以下2桁を超える行を抽出するクエリ

それでは、小数点以下が2桁より多い行だけを取り出すクエリを見てみましょう。

mysql> select *from selectRows2DecimalPlacesDemo WHERE
LENGTH(SUBSTR(Amount,INSTR(Amount,"."))) >3;

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

+----------+
| Amount   |
+----------+
| 234.5678 |
| 23.456   |
| 12.123   |
+----------+
3 rows in set (0.00 sec)

クエリの仕組み

このクエリは、3つの文字列関数を組み合わせることで実現しています。

  • INSTR(Amount, "."):文字列内に小数点「.」が最初に現れる位置を返します。
  • SUBSTR(Amount, 位置):指定した位置(小数点の位置)から末尾までの文字列を抽出します。抽出結果には小数点自体も含まれます。
  • LENGTH(...):抽出した文字列の長さを返します。小数点1文字+小数桁数となるため、長さが3より大きければ「小数点以下が3桁以上(つまり2桁超)」であることを意味します。

なお、この方法はAmountカラムがvarchar型(文字列型)であることを前提としています。数値型のカラムに対して同様の処理を行いたい場合は、CAST()やCONVERT()で文字列に変換してから適用するとよいでしょう。

  1. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected

  2. MySQLで重複している値(複数回出現するデータ)を抽出する方法

    テーブル内に2回以上出現する値(重複データ)を抽出したい場合、「GROUP BY」句と「HAVING」句を「COUNT(*)」関数と組み合わせて使用します。WHERE句は集計前の行に対して条件を適用するため、集計後の結果を絞り込むにはHAVING句が必要になる点がポイントです。 1. サンプルテーブルを作成する まず、検証用のテーブルを作成しましょう。 mysql> create table DemoTable     -> (     -> Value int   &nbs