이 글은 주로 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,'smith',7499,'allen',7521,'ward',7566,'jones','unknow') 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, 'high sal', 0, 'high sal', - 1, DECODE(SIGN(sal - 3000), 1, 'mid sal', 0, 'mid sal', - 1, DECODE(SIGN(sal - 1000), 1, 'low sal', 0, 'low sal', - 1, 'low sal'))) 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 함수는 표현식과 검색어를 비교하여 일치하면 결과를 반환합니다. 일치하지 않으면 기본값을 반환하고, 기본값이 정의되지 않으면 null 값을 반환합니다.
sql 테스트SELECT SUM(DECODE(ENAME,'SMITH',SAL,0)) SMITH, SUM(DECODE(ENAME,'ALLEN',SAL,0)) ALLEN, SUM(DECODE(ENAME,'WARD',SAL,0)) WARD, SUM(DECODE(ENAME,'JONES',SAL,0)) JONES, SUM(DECODE(ENAME,'MARTIN',SAL,0)) MARTIN FROM EMP
출력 결과
SMITH ALLEN WARD JONES MARTIN 800 1600 1250 2975 1250
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, 'S'), 0, '不含有s', '含有s') AS INFO FROM EMP
관련 권장 사항:
php
위 내용은 오라클에서 디코드 기능을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!