ホームページ > データベース > mysql チュートリアル > Oracleのデコード機能の使い方

Oracleのデコード機能の使い方

小云云
リリース: 2017-12-11 14:44:25
オリジナル
4178 人が閲覧しました

この記事ではOracleのdecode関数の使用例を中心に紹介していますので、ぜひ学習して使いこなしてください。

decode のいくつかの使用法

1: decode を使用して文字列が同じかどうかを判断します

DECODE (value, if1, then1, if2, then2, if3, then3,..., else)

意味
IF 条件=値 1 THEN
RETURN(値 1)

ELSIF 条件=値 2 THEN
RETURN(値 2)
...

ELSIF 条件=値 n THEN
RETURN(値 3 )
ELSE
RETURN(デフォルト)
END IF

sql test

select empno,decode(empno,7369,&#39;smith&#39;,7499,&#39;allen&#39;,7521,&#39;ward&#39;,7566,&#39;jones&#39;,&#39;unknow&#39;) as name from emp where rownum<=10
ログイン後にコピー

出力結果

7369 smith
7499 allen
7521 ward
7566 jones
7654 unknow
7698 unknow
7782 unknow
7788 unknow
7839 unknow
7844 unknow
ログイン後にコピー

2: デコードを使用してサイズを比較します

select decode(sign(var1- Dual

sign() 関数の var2),-1,var 1,var2) は、値が 0、正または負であるかどうかに応じて、それぞれ 0、1、-1 を返します


sql test

select decode(sign(100-90),-1,100,90) from dual
ログイン後にコピー

出力結果

90
ログイン後にコピー

100-90=10>0が1を返すので、デコード関数の最終値は90になります


とにかく

select decode(sign(100-90),1,100,90) from dual
ログイン後にコピー

出力結果

りー

100-90=10>0は1を返し、判定結果は1、最初の変数100を返し、最終的な出力結果は100になります


3: デコード関数を使用して

給与以上をセグメント化します5000は、3000から5000の給与が中程度であり、給与は3000未満です。デコードを使用してテーブルの行と列の変換を実現するか試行します


sql test

100
ログイン後にコピー

出力結果は次のとおりです

SELECT 
  ename,sal,
  DECODE(SIGN(sal - 5000),
      1,
      &#39;high sal&#39;,
      0,
      &#39;high sal&#39;,
      - 1,
      DECODE(SIGN(sal - 3000),
          1,
          &#39;mid sal&#39;,
          0,
          &#39;mid sal&#39;,
          - 1,
          DECODE(SIGN(sal - 1000),
              1,
              &#39;low sal&#39;,
              0,
              &#39;low sal&#39;,
              - 1,
              &#39;low sal&#39;)))
FROM
  emp
ログイン後にコピー

5: decode 関数を使用して文字列を検索します式

decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)

decode 関数は、式と検索語が一致する場合、結果を返します。一致しない場合はデフォルト値を返し、デフォルト値が定義されていない場合は null 値を返します。

SQLテスト

SMITH  800  low sal
ALLEN 1600 low sal
WARD 1250 low sal
JONES 2975 low sal
MARTIN 1250 low sal
BLAKE  2850 low sal
CLARK 2450 low sal
SCOTT 3000 mid sal
KING 5000 high sal
TURNER 1500 low sal
ADAMS 1100 low sal
JAMES 950     low sal
FORD 3000 mid sal
MILLER 1300 low sal
ログイン後にコピー

結果を出力

SELECT 
    SUM(DECODE(ENAME,&#39;SMITH&#39;,SAL,0)) SMITH,
    SUM(DECODE(ENAME,&#39;ALLEN&#39;,SAL,0)) ALLEN,
    SUM(DECODE(ENAME,&#39;WARD&#39;,SAL,0))  WARD,
    SUM(DECODE(ENAME,&#39;JONES&#39;,SAL,0)) JONES,
    SUM(DECODE(ENAME,&#39;MARTIN&#39;,SAL,0)) MARTIN FROM EMP
ログイン後にコピー


実際の開発ではデコード関数がとても便利


Lpad関数と組み合わせて主キーの値に自動で1を加える方法先頭に 0 を追加します

select LPAD(decode(count(レコード番号),0,1,max(to_number(レコード番号)+1)),14,'0') レコード番号 from tetdmis

例:

select decode (dir,1,0,1) from a1_interval

dirの値は1から0に変化し、0の場合は1に変化します


例えば、特定のクラスの男の子と女の子の数は?


通常、次のように書きます:

性別 = 男性のテーブルからカウント(*)を選択します。


場合は、一緒に表示したい場合は結合しないといけないので面倒です


decodeを使うには一文だけです


select sum(decode(gender, men, 1, 0)), sum(decode(性別、女性、1、0)) 表から


例:


SMITH ALLEN WARD  JONES MARTIN
 800 1600  1250    2975    1250
ログイン後にコピー



もう学びましたか?急いで試してみてください。

関連する推奨事項:


phpのjson_decode関数で注意すべきこと


Oracleの共通関数Truncの詳細説明

Oracleのカスタムsplit関数の例の詳細説明

以上がOracleのデコード機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート