×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
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
コメント