忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

MySQL 「負」「ゼロ」「正」の判定を行う数学関数について(SIGN)

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

コメント

コメントを書く