MySQLのSTRCMP()関数で数値を引数として使用する方法
MySQLのSTRCMP()関数は、文字列だけでなく数値も引数として比較に利用できます。その場合、数値は引用符(クォート)を付けずにそのまま渡すのがポイントです。
基本的な使い方
STRCMP()関数は、第1引数と第2引数を比較し、以下のような結果を返します。
- 両者が等しい場合:0
- 第1引数が小さい場合:-1
- 第1引数が大きい場合:1
- どちらか一方、または両方がNULLの場合:NULL
実行例
次の例では、等しい数値同士、大小関係が異なる数値同士、さらにNULLを含む組み合わせについて、それぞれの比較結果を確認しています。
mysql> Select STRCMP(10,10)As 'Equal Numbers', STRCMP(11,10)AS '2nd Smaller', STRCMP(10,11)AS '1st Smaller', STRCMP(10,NULL)As '2nd NULL',STRCMP(NULL,10)AS '1st NULL',STRCMP(NULL,NULL)AS 'Both NULL'; +---------------+-------------+-------------+----------+----------+-----------+ | Equal Numbers | 2nd Smaller | 1st Smaller | 2nd NULL | 1st NULL | Both NULL | +---------------+-------------+-------------+----------+----------+-----------+ | 0 | 1 | -1 | NULL | NULL | NULL | +---------------+-------------+-------------+----------+----------+-----------+ 1 row in set (0.00 sec)
結果の解説
- STRCMP(10,10) → 両者とも同じ値なので 0 を返します。
- STRCMP(11,10) → 第1引数(11)の方が大きいので 1 を返します。
- STRCMP(10,11) → 第1引数(10)の方が小さいので -1 を返します。
- STRCMP(10,NULL)、STRCMP(NULL,10)、STRCMP(NULL,NULL) → 引数にNULLが含まれる場合は、いずれも NULL が返されます。
このように、STRCMP()関数は引用符なしの数値をそのまま扱えるため、数値データの大小比較にも手軽に活用できます。ただし、NULLが含まれるケースでは必ずNULLが返る点には注意が必要です。
-
MySQLで空白値とNULL値をスキップする方法を実例で解説
MySQLで空白値とNULL値をスキップするには? MySQLでデータを取得する際、NULLだけでなく空文字()のレコードもまとめて除外したいケースはよくあります。その場合は、IS NOT NULL と <> をAND条件で組み合わせたWHERE句を使用します。 基本構文 select *from yourTableName where yourColumnName IS NOT NULL AND yourColumnName <> ; MySQLではNULLと空文字は別のものとして扱われるため、両方を除外するにはこのように2つの条件が必要です。「IS NOT NUL
-
【MySQL】行内のNULLの数をカウントする方法|ISNULL()関数の使い方を解説
MySQLで行内のNULLの数をカウントするには?MySQLでは、ISNULL()関数を使用することで、行内に含まれるNULL値の数を簡単にカウントできます。ISNULL()関数は、引数がNULLの場合に「1」を、NULLでない場合に「0」を返すため、複数の列に対するISNULL()の戻り値を合計すれば、その行のNULLの総数を求めることができます。ここからは、実際にサンプルテーブルを作成しながら手順を見ていきましょう。1. サンプルテーブルを作成するまず、CREATE TABLE文でテーブルを作成します。mysql> create table DemoTable