programing

오라클 데이터베이스의 디코딩 기능

goodsources 2023. 7. 30. 17:43
반응형

오라클 데이터베이스의 디코딩 기능

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라고 생각할 수 있습니다.decodeif 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

반응형