>  기사  >  데이터 베이스  >  오라클에서 디코드 기능을 사용하는 방법

오라클에서 디코드 기능을 사용하는 방법

小云云
小云云원래의
2017-12-11 14:44:254095검색

이 글은 주로 Oracle에서 Decode 기능을 사용하는 방법에 대한 예제를 소개합니다. Decode 기능을 학습한 후 사용법을 숙지해 보시기 바랍니다.

디코드의 다양한 용도

1: 디코드를 사용하여 문자열이 동일한지 확인

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

의미
IF 조건=값 1 THEN
  RETURN(값 1)

ELSIF 조건=값 2 THEN
  RETURN(값 2)
  …

ELSIF 조건=값 n THEN
  RE 회전(값 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: 디코드를 사용하여 크기 비교

디코드 선택(sign(var1- var2) ,-1,var 1,var2) from Dual

sign() 함수는 값이 0, 양수 또는 음수인지에 따라 각각 0, 1, -1을 반환합니다

sql test

select decode(sign(100-90),-1,100,90) from dual

The 출력 결과

90

100-90=10>0은 1을 반환하므로 디코드 함수의 최종 값은 90

Anyway

select decode(sign(100-90),1,100,90) from dual

출력 결과

100

100-90=10>0은 1을 반환하고, 판정 결과는 1이며, 첫 번째 변수 100을 반환하고, 최종 출력 결과는 100입니다.

3: 디코드 기능을 사용하여

급여가 5000보다 큰 세그먼트를 만듭니다. 3000에서 5000 사이의 급여는 중간이고 3000 미만의 급여는 낮은 급여입니다. 테이블 또는 시도의 행 및 열 변환을 구현하려면

sql test

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

출력 결과는 다음과 같습니다

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

5: 디코드 기능을 사용하여 표현식을 사용하여 문자열을 검색합니다

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

decode 함수는 표현식과 검색어를 비교하여 일치하면 결과를 반환합니다. 일치하지 않으면 기본값을 반환하고, 기본값이 정의되지 않으면 null 값을 반환합니다.

sql 테스트

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

출력 결과

SMITH ALLEN WARD  JONES MARTIN
 800 1600  1250    2975    1250


디코드 기능은 실제 개발에 매우 ​​유용합니다


Lpad 기능과 결합하여 기본 키 값에 1을 자동으로 추가하는 방법 그리고 앞에 0을 추가하세요.

tetdmis

에서 LPAD(decode(count(레코드 번호),0,1,max(to_number(레코드 번호)+1)),14,'0') 레코드 번호를 선택하세요. 예:

a1_interval

에서 디코드(dir,1,0,1)을 선택합니다. dir의 값은 1에서 0으로 변경되고, 0이면 1로 변경됩니다.


예를 들어 다음을 쿼리하고 싶습니다. 특정 학급에 남학생과 여학생의 수는?


일반적으로 다음과 같이 작성합니다.

성별 = 남성인 테이블에서 count(*) 선택
성별 = 여성인 테이블에서 count(*) 선택


같이 표시하려면 유니온해야 하는데 너무 번거롭습니다


디코드를 사용하려면 한 문장만 있으면 됩니다


select sum(decode(gender, men, 1, 0)), sum(decode( 성별, 여성, 1, 0)) from table


eg:


SELECT 
  ENAME,
  SAL,
  DECODE(INSTR(ENAME, &#39;S&#39;),
      0,
      &#39;不含有s&#39;,
      &#39;含有s&#39;) AS INFO
FROM
  EMP


아직 배우지 않으셨나요? 서둘러서 한번 시도해 보세요.


관련 권장 사항:


php


Oracle의 공통 함수 Trunc에 대한 자세한 설명

Oracle의 사용자 정의 분할 함수 예제에 대한 자세한 설명

위 내용은 오라클에서 디코드 기능을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.