오라클 데이터베이스의 디코딩 기능
Oracle DB의 아래 SQL 문에 대해 설명할 수 있는 사람이 있습니까?
select decode(TRIM(to_char(SYSDATE,'Day')),'Monday','3','1') from dual
우선, 다음과 같은 것부터 시작하겠습니다.to_char
.to_char(SYSDATE,'Day')
오늘의 요일을 알려드리겠습니다.to_char
날짜를 변환할 수 있습니다(이 경우 지정한 이후의 오늘 날짜).sysdate
특정 형식의 문자열로 변환합니다.사용할 수 있는 날짜 형식의 다른 예는 다음과 같습니다.
http://www.techonthenet.com/oracle/functions/to_char.php
trim
선행 및 후행 공백을 제거합니다.
다음은decode
라고 생각할 수 있습니다.decode
if other 진술처럼.다음을 살펴보십시오.
http://www.techonthenet.com/oracle/functions/decode.php
특정 예제에서 이 문장을 다음과 같이 읽을 수 있습니다. 오늘이 월요일이면 3을 반환하고 그렇지 않으면 1을 반환합니다.
decode
또한 다음과 같이 좀 더 복잡한 작업을 수행할 수 있습니다.
select decode(TRIM(to_char(SYSDATE,'Day')),'Monday','3','Tuesday',5,'1')
from dual
이것은 다음과 같습니다: 오늘이 월요일이면 3을 반환하고, 오늘이 화요일이면 5를 반환하고, 그렇지 않으면 1을 반환합니다.
그것은 돌아올 것입니다.3
현재 월요일인 경우(로컬이 "월요일"로 렌더링되는 경우),1
그렇지않으면.
DECODE(a, b,c, d,e, f,g, ..., h)
비교할 것a
로.b
,d
,f
등등, 차례대로. 만약에.a
이라b
,그리고나서DECODE
돌아온다c
만일a
이라d
,그리고나서DECODE
돌아온다e
등등. 만약에.a
그렇다면, 이것들 중 어느 것도 아닙니다.DECODE
돌아온다h
(그h
는 선택 사항이며, 기본 반환 값(경우)h
주어지지 않죠?NULL
.)
다음은 부품별 설명입니다.
시스템 날짜
15-APR-19와 같은 서버 날짜와 로컬 기반 형식을 반환합니다.
to_char(SYSDATE, '요일')
문자열로 변환하고 날짜 15-APR-19에 대한 월요일과 같은 주 요일로 반환합니다.
TRIM(to_char(SYSDATE, '일'))
의 앞뒤에 빈 공간을 제거하는 중입니다.
디코딩 기능은 ifelse 문과 유사하므로 코드를 단순화합니다.Current 예제의 경우 SQL로 작성하면 아래와 같습니다.
CASE
WHEN TRIM(to_char(SYSDATE,'Day')) = 'Monday' THEN '3'
WHEN TRIM(to_char(SYSDATE,'Day')) = 'Tuesday' THEN '4'
ELSE '1'
END
전체 참조는 https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm 를 참조하십시오.
언급URL : https://stackoverflow.com/questions/9354346/decode-function-in-oracle-database
'programing' 카테고리의 다른 글
Oracle Jinitator 버전이 너무 낮음 (0) | 2023.07.30 |
---|---|
Angular 5의 헤더에 CORS 요청을 추가하는 방법 (0) | 2023.07.30 |
중지된 도커 컨테이너를 다시 시작하는 방법 (0) | 2023.07.30 |
목표 c에서 NSData를 NSString으로 변환 (0) | 2023.07.30 |
alloc, malloc 및 alloca — 차이점이 무엇입니까? (0) | 2023.07.25 |