MySQL では数値が「負」「ゼロ」「正」の判定を行う数学関数である SIGN 関数があります。
SIGN 関数は以下の様な引数をとります。
SIGN(X) -- X : 判定する数値(X がマイナス値、ゼロ、プラス値に応じて、結果を「-1」「0」「1」として返します。)
それでは、SIGN 関数の使用例を示します。
■[SIGN関数]の例
MariaDB [(none)]> SELECT SIGN(-12), SIGN(0), SIGN(10); +-----------+---------+----------+ | SIGN(-12) | SIGN(0) | SIGN(10) | +-----------+---------+----------+ | -1 | 0 | 1 | +-----------+---------+----------+ 1 row in set (0.02 sec)
SIGN 関数の応用例として以下の例を示します。
■[SIGN関数]の例
最初にテストテーブル「t_sign」を以下の様に作成します。 単に「id」と数値データ「val」を持つテーブル構造としました。
MariaDB [test]> CREATE TABLE t_sign (
-> id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> val NUMERIC
-> );
Query OK, 0 rows affected (0.19 sec)
MariaDB [test]> INSERT INTO t_sign(val) VALUES(110) , (500), (300), (120), (250);
Query OK, 5 rows affected (0.03 sec)
Records: 5 Duplicates: 0 Warnings: 0
MariaDB [test]> SELECT * FROM t_sign;
+----+------+
| id | val |
+----+------+
| 1 | 110 |
| 2 | 500 |
| 3 | 300 |
| 4 | 120 |
| 5 | 250 |
+----+------+
5 rows in set (0.00 sec)
このテストテーブルを使って SIGN 関数の応用ですが、 「val」の値が指定値より小さいのか大きいのかの判定を行ってみます。
MariaDB [test]> SELECT
-> CASE SIGN(val - 250)
-> WHEN 1 THEN '250より大きい'
-> WHEN 0 THEN '250と等しい'
-> ELSE '250より小さい'
-> END AS '250との比較'
-> FROM t_sign;
+---------------+
| 250との比較 |
+---------------+
| 250より小さい |
| 250より大きい |
| 250より大きい |
| 250より小さい |
| 250と等しい |
+---------------+
5 rows in set (0.00 sec)
SIGN 関数の応用の一例でしたが、上手く使えば使い道はあると思います。
PR
コメント