MySQLでハイフン区切りの数値文字列から最小値と最大値を取得する方法
MySQLで、ハイフン(-)で区切られた数値を含む文字列から最小値と最大値を取得するには、最小値にはMIN()関数を、最大値にはMAX()関数を使用します。文字列を分割するにはSUBSTRING_INDEX()関数を組み合わせると便利です。
テーブルの作成
まず、以下のようにテーブルを作成します。
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Value varchar(100)
-> );
Query OK, 0 rows affected (0.76 sec)
レコードの挿入
insertコマンドを使用して、テーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable(Value) values('10-20');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(Value) values('200-100');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Value) values('780-235');
Query OK, 1 row affected (0.29 sec)レコードの表示
select文でテーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable;
上記のクエリは次のような出力を生成します。
+----+---------+
| Id | Value |
+----+---------+
| 1 | 10-20 |
| 2 | 200-100 |
| 3 | 780-235 |
+----+---------+
3 rows in set (0.00 sec)
最小値と最大値を取得するクエリ
以下が、ハイフンで区切られた文字列から数値部分を抽出し、MIN()とMAX()を使って最小値と最大値を求めるクエリです。SUBSTRING_INDEX(Value, '-', 1)で最初の数値を、SUBSTRING_INDEX(Value, '-', -1)で最後の数値をそれぞれ取得できます。
mysql> select min(SUBSTRING_INDEX(Value, '-', 1)),
-> max(SUBSTRING_INDEX(Value, '-', -1))
-> from DemoTable;
このクエリを実行すると、次の出力が得られます。
+-------------------------------------+--------------------------------------+
| min(SUBSTRING_INDEX(Value, '-', 1)) | max(SUBSTRING_INDEX(Value, '-', -1)) |
+-------------------------------------+--------------------------------------+
| 10 | 235 |
+-------------------------------------+--------------------------------------+
1 row in set (0.04 sec)
このように、SUBSTRING_INDEX()関数と集計関数を組み合わせることで、ハイフンなど特定の区切り文字を含む文字列データからも、簡単に最小値と最大値を算出することができます。
-
MySQLでVARCHAR文字列からハイフン以降の数値を削除する方法(SUBSTRING_INDEX活用)
MySQLで「John-232」のようなハイフンを含むVARCHAR型の文字列から、ハイフン以降の数値部分を削除したい場合があります。このような処理には、SUBSTRING_INDEX() 関数を使用すると簡単に実現できます。SUBSTRING_INDEX()関数とはSUBSTRING_INDEX(文字列, 区切り文字, 出現回数) は、指定した区切り文字が現れる位置より前の部分文字列を返す関数です。第3引数に「1」を指定すると、区切り文字が最初に出現する位置より前の文字列だけが取得されます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create t
-
【MySQL】MIN関数とMAX関数で最小値・最大値を取得する方法
MySQLで特定の列の最大値を取得するには MAX() 関数を、最小値を取得するには MIN() 関数を使用します。これらは最も基本的な集計関数の一つで、数値はもちろん、日付や文字列の大小比較にも利用できます。基本構文特定の列の最高値と最低値を求め、その値に該当するレコードを取得する場合の基本的な構文は以下の通りです。mysql> SELECT @min_val:=MIN(columnName),@max_val:=MAX(columnName) FROM tableName; mysql> SELECT * FROM tableName WHERE columnName=@min