2012-02-19 2 views
4

사람은 오라클 DB에서 아래의 SQL 문을 설명해 주시겠습니까 :디코드 기능

select decode(TRIM(to_char(SYSDATE,'Day')),'Monday','3','1') from dual 

답변

18

첫째,의는 to_char 시작하자. to_char(SYSDATE,'Day') 오늘의 요일을 알려줍니다. to_char을 사용하면 특정 형식의 문자열로 날짜 (이 경우 sysdate을 지정 했으므로 오늘 날짜)를 변환 할 수 있습니다. 당신이 사용할 수있는 날짜 형식의 다른 예는 여기를보세요 :

http://www.techonthenet.com/oracle/functions/to_char.php

trim 선행과 후행 공백 제거합니다.

지금은 decode입니다. decode은 if else 문과 같습니다. 오늘 월요일 리턴 3의 경우 다른 1.

decode를 돌려 또한 조금 더 일을 수행 할 수 있습니다 살펴 보자로 특정 예에서

http://www.techonthenet.com/oracle/functions/decode.php

을, 당신은이 문장을 읽을 수 이 같은 복잡한 :

select decode(TRIM(to_char(SYSDATE,'Day')),'Monday','3','Tuesday',5,'1') 
from dual 

이 읽기 ​​것입니다 : 오늘, 다른 월요일 반환 3의 경우 오늘 화요일 반환 5, 그렇지 않은 경우 1

경우
11

는 현재 월요일 (그리고 로케일이 날이 "월요일"로 렌더링되도록이면 3가 반환)이고, 그렇지 않으면 1입니다.

DECODE(a, b,c, d,e, f,g, ..., h)

a- b, d, f 등을 차례로 비교합니다. ab 인 경우 DECODEc을 반환합니다. ad 인 경우 DECODEe을 반환합니다. 등등. a이 아닌 경우 DECODEh을 반환합니다. 합니다 ( h는 선택 사항입니다 h이 지정되지 않는 경우는 기본 반환 값은, NULL입니다.) 모든