decode()関数

2120 ワード

最近sql文を書いたとき、decode()という関数は確かに強くて便利だと気づきました.
--DECODE()この関数を提供するのはoracle()のみです.DECODE()は条件文(IF)に相当します.入力値を関数のパラメータリストと比較し、入力値に基づいて対応する値を返します.関数のパラメータリストは、いくつかの数値とその対応する結果値からなるいくつかのシーケンス形式です.もちろん、いずれかの実パラメトリック偶数と一致しなかった場合、関数にもデフォルトの戻り値があります.SQLの他の関数とは異なり、DECODE関数は空の値を識別して操作することもできる.その具体的な構文フォーマットは、DECODE(input_value,value,result[,value,result...][default_result]);内訳:input_valueが処理しようとした数値.DECODE関数はこの値を一連のシーケンスと比較して、最後の戻り結果valueがシーケンスを構成する数値であることを決定する.入力値が一致すると、対応する結果が返されます.空の戻り値に対応し、キーワードNULLを使用して対応するresultがシーケンスを構成する結果値default_であることができます.resultが任意のシーケンスと一致しなかった場合、関数が返すデフォルト値の次の例は、ユーザーCHECKUPテーブルSEAPARKのBLOOD_を読み込む方法を示しています.TEST_FLAG列の下の項目は、DECODE関数の実パラメトリックサポート値として使用されます.SELECT checkup_type,DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’)decode(条件,値1,翻訳値1,値2,翻訳値2,...値n,翻訳値n,デフォルト値)--この関数の意味は、if条件=値1 then return(翻訳値1)else if条件=値2 then return(翻訳値2)...else if条件=値n then return(翻訳値n)else return(デフォルト)end if--インスタンス1その基準は、賃金が8000元以下の場合は20%加算されます.給料は8000元以上で15%加算されます
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee

--1.サイズの比較
 select decode(sign(  1-  2),-1,  1,  2) from dual;

--小さい値をとるsign()関数は、ある値が0、正、負のいずれかに基づいて、それぞれ0、1、-1を返します.
--例えば、変数1=10、変数2=20はsign(変数1-変数2)が-1を返し、decode復号結果は「変数1」となり、より小さな値をとる目的を達成する