> 데이터 베이스 > MySQL 튜토리얼 > Oracle의 디코드 기능 사용법에 대한 자세한 설명

Oracle의 디코드 기능 사용법에 대한 자세한 설명

小云云
풀어 주다: 2018-05-15 15:07:14
원래의
3190명이 탐색했습니다.

decode() 함수는 ORACLE PL/SQL의 가장 강력한 함수 중 하나입니다. 현재 ORACLE의 SQL만 이 기능을 제공합니다. 다른 데이터베이스 제조업체의 SQL 구현에는 아직 이 기능이 없습니다. 이번 글은 오라클의 디코드 기능에 대한 관련 정보를 주로 소개하고 있으니, 필요하신 분들은 참고하시면 좋을 것 같습니다.

의미 설명:

decode(조건, 값 1, 반환 값 1, 값 2, 반환 값 2,... 값 n, 반환 값 n, 기본값)

이 함수의 의미는 다음과 같습니다.

IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF
decode(字段或字段的运算,值1,值2,值3)
로그인 후 복사

이 함수의 결과는 필드 또는 필드 연산의 값이 값 1과 같으면 함수는 값 2를 반환하고, 그렇지 않으면 값 3을 반환합니다
물론 값 1, 값 2, 값 3은 표현식이 될 수도 있습니다. 이 함수는 특정 SQL 문을 훨씬 더 간단하게 만듭니다.

사용 방법:

1. 크기 비교

select decode(sign(variable 1-variable 2),-1,variable 1,variable 2) 이중에서 -- 더 작은 값을 가져옵니다

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

예:

변수 1=10, 변수 2=20

then sign(변수 1 - 변수 2)은 -1을 반환하고 디코딩 결과는 "변수 1"이 되어 더 작은 값을 취하려는 목적을 달성합니다.

2. 이 함수는 SQL 문에서 사용됩니다. 이 함수는 다음과 같이 소개됩니다.

Decode 함수는 일련의 중첩된 IF-THEN-ELSE 문과 유사합니다. base_exp를 Compare1, Compare2 등과 차례로 비교합니다. base_exp가 i번째 비교 항목과 일치하면 i번째 해당 값을 반환합니다. base_exp가 비교 값과 일치하지 않으면 기본값이 반환됩니다. 각 비교 값은 순차적으로 평가되며 일치하는 항목이 있으면 나머지 비교 값(있는 경우)은 다시 평가되지 않습니다. NULL base_exp는 NULL 비교 값과 동일한 것으로 간주됩니다. 필요한 경우 각 비교 값은 반환 값의 유형이기도 한 첫 번째 비교 값과 동일한 데이터 유형으로 변환됩니다.

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

Lpad 기능과 결합하여 기본 키의 값을 자동으로 1씩 늘리고 앞에 0을 추가하는 방법

select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis
 eg:
 select decode(dir,1,0,1) from a1_interval
로그인 후 복사

dir의 값은 1에서 0으로 변경되며, 그리고 0부터 1까지

예를 들어, 특정 클래스에 속한 남학생과 여학생의 수를 쿼리하고 싶습니다.

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

select count(*) from 表 where 性别 = 男;
select count(*) from 表 where 性别 = 女;
로그인 후 복사

이들을 함께 표시하려면 이들을 결합해야 합니다. 너무 귀찮습니다

decode를 사용하면 한 문장만 있으면 됩니다

select sum(decode(性别,男,1,0)),sum(decode(性别,女,1,0)) from 表
eg:
select sum(decode(siteno,'LT',1,0)),sum(decode(siteno,'SZ',1,0)) from facd605;
select sum(case siteno when 'LT' then 1 else 0 end),sum(case siteno when 'SZ' then 1 else 0 end) from facd605;
vinson
로그인 후 복사

관련 권장 사항:

PHP json_decode는 특수 물음표 문자를 구문 분석할 수 없습니다

PHP가 중국어 메소드를 탈출하지 않고 json_decode를 구현하는 방법 소개

json_encode와 json_decode의 차이점을 비교하세요

위 내용은 Oracle의 디코드 기능 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿