CASE 구문(조건문, 분기문)

CASE

WHEN

THEN

ELSE

END

SELECT CASE 5+2 WHEN 4 THEN '5+2=4' ELSE '5+2는 몰라요' END
  FROM DUAL;
--==>> 5+2는 몰라요

SELECT CASE 5+2 WHEN 7 THEN '5+2=7' ELSE '5+2=6' END
  FROM DUAL;
--==>> 5+2=7

SELECT CASE 1+1 WHEN 2 THEN '1+1=2'
                WHEN 3 THEN '1+1=3'
                WHEN 4 THEN '1+1=4'
                ELSE '난 산수 싫어'
        END "RESULT"
  FROM DUAL;
--==>> 1+1=2

SELECT CASE 1+1 WHEN 2 THEN '1+1=2'
                WHEN 3 THEN '1+1=3'
                WHEN 2 THEN '1+1=4' -- 앞에서 맞는 결과 있으면 뒤에 확인 안함
                ELSE '난 산수 싫어'
        END "RESULT"
  FROM DUAL;
--==>> 1+1=2        

SELECT CASE WHEN 5+2=4 THEN '5+2=4'
            WHEN 6-3=2 THEN '6-3=2'
            WHEN 7*1=8 THEN '7*1=8'
            WHEN 6/2=3 THEN '6/2=3'
            ELSE '모르겠네'
        END "RESULT"
  FROM DUAL;        -- 상황이 다른 경우 TRUE를 반환하면된다.
--==>> 6/2=3

 

DECODE()

SELECT DECODE(5-2, 1, '5-2=1', 2, '5-2=2', 3, '5-2=3', '5-2는 몰라요') "RESULT" 
-- DECODE 함수의 파라미터 제한이 없다
  FROM DUAL;
--==>> 5-2=3

 

 

 

 

 

 

 

 

 


https://www.instagram.com/p/CY-jVQVpwyY/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


https://www.notion.so/CASE-1-be7b73b5a49949b99255df955a82c7b6

https://www.notion.so/CASE-2-13556717716c4887a291472f5b99effa

 

 

'SQL > Oracle' 카테고리의 다른 글

24. RANK()  (0) 2022.03.12
23. VIEW  (0) 2022.03.12
21. 변환 함수  (0) 2022.03.12
20. 날짜 연산 함수  (0) 2022.03.12
19. 숫자 처리 함수  (0) 2022.03.12
  • TO_CHAR() : 숫자나 날짜 데이터를 문자 타입으로 변환시켜주는 함수
  • TO_DATE() : 문자 데이터를 날짜 타입으로 변환시켜주는 함수
  • TO_NUMBER() : 문자 데이터를 숫자 타입으로 변환시켜주는 함수

 

※ 날짜나 통화 형식이 맞지 않을 경우 설정값을 통해 세션을 설정하여 사용할 수 있다.

ALTER SESSION SET NLS_LANGUAGE = 'KOREAN';
ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN';
ALTER SESSION SET NLS_CURRENCY = '\\';
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';

 

날짜형 → 문자형

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD')  -- 2022-02-22 (이건 문자형임)
     , TO_CHAR(SYSDATE, 'YYYY')        -- 2022
     , TO_CHAR(SYSDATE, 'YEAR')        -- TWENTY TWENTY-TWO
     , TO_CHAR(SYSDATE, 'MM')          -- 02
     , TO_CHAR(SYSDATE, 'MONTH')       -- 2월
     , TO_CHAR(SYSDATE, 'MON')         -- 2월
     , TO_CHAR(SYSDATE, 'DD')          -- 22
     , TO_CHAR(SYSDATE, 'MM-DD')       -- 02-22
     , TO_CHAR(SYSDATE, 'DAY')         -- 화요일
     , TO_CHAR(SYSDATE, 'DY')          -- 화
     , TO_CHAR(SYSDATE, 'HH24')        -- 16
     , TO_CHAR(SYSDATE, 'HH')          -- 04
     , TO_CHAR(SYSDATE, 'HH AM')       -- 04 오후
     , TO_CHAR(SYSDATE, 'HH PM')       -- 04 오후
-- AM이든 PM이든 지금 기준으로 출력
     , TO_CHAR(SYSDATE, 'MI')          -- 19
     , TO_CHAR(SYSDATE, 'SS')          -- 45
     , TO_CHAR(SYSDATE, 'SSSS')        -- 59369
-- 오늘 날짜의 자정부터 지금까지 흘러온 전체 초
     , TO_CHAR(SYSDATE, 'Q')           -- 1
  FROM DUAL; 
-- 다 문자형
SELECT 7             -- 숫자 우측 정렬
     , '7'           -- 문자 좌측 정렬
     , TO_CHAR(7)    -- 좌측 정렬
FROM DUAL;
--> 조회 결과 정렬 확인하기

 

EXTRACT()

SELECT TO_CHAR(SYSDATE, 'YYYY')    -- 2022(문자형) → 연도를 추출하여 문자 타입으로 변환
     , TO_CHAR(SYSDATE, 'MM')      -- 02(문자형) → 월을 추출하여 문자 타입으로 반환
     , TO_CHAR(SYSDATE, 'DD')      -- 22(문자형) → 일을 추출하여 문자 타입으로 반환
     , EXTRACT(YEAR FROM SYSDATE)  -- 2022(숫자형) → 연도를 추출하여 숫자 타입으로 반환
     , EXTRACT(MONTH FROM SYSDATE) -- 2 (숫자형) → 월을 추출하여 숫자 타입으로 반환
, EXTRACT(DAY FROM SYSDATE)        -- 22 (숫자형) → 일을 추출하여 숫잩 타입으로 반환
FROM DUAL;
--> 연, 월, 일 이외의 다른 항목은 불가~!!

 

TO_CHAR() 항목 → 형식 맞춤 표기 결과값 반환

SELECT 60000 
     , TO_CHAR(60000, '99,999') 
     , TO_CHAR(60000, '$99,999') 
     , TO_CHAR(60000, 'L99,999')  -- (기본 통화가 단일 특수 기호로 표현되지 않는 기호를 위해 공간을 많이 확보)
     , LTRIM(TO_CHAR(60000, 'L99,999')) -- 이렇게 하면 공백 지울 수 있음
FROM DUAL; -- 모두 좌측 정렬임
--==>> 60000	 60,000	 $60,000	        ₩60,000	₩60,000

 

세션 설정 변경

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

(앞에서 배운 방식)

 

현재 시간을 기준으로 1일 2시간 3분 4초 후를 조회한다.

SELECT SYSDATE "현재 시간"
     , SYSDATE + 1 + (2/24) + (3/(24*60)) + (4/(24*60*60)) "1일2시간3분4초후"
FROM DUAL;
--==>> 2022-02-22 16:48:13
-- 2022-02-23 18:51:17

(TO_YMINTERVL(), TO_DSINTERVAL() 사용해서)

현재 시간을 기준으로 1년 2개월 3일 4시간 5분 6초 후를 조회한다. TO_YMINTERVL(), TO_DSINTERVAL() -- (앞에는 년, 월 뒤에는 일 초 단위 함수)

SELECT SYSDATE "현재 시간"
     , SYSDATE + TO_YMINTERVAL('01-02') + TO_DSINTERVAL('003 04:05:06') "연산 시간"  -- (매개변수는 문자타입)
FROM DUAL;
--==>>
/*
2022-02-22 17:04:53	
2023-04-25 21:09:59
*/

 

 

 

 

 

 

 

 

 

 

 

 

 


https://www.instagram.com/p/CaoGukDJIdz/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

23. VIEW  (0) 2022.03.12
22. CASE 구문(조건문, 분기문)  (0) 2022.03.12
20. 날짜 연산 함수  (0) 2022.03.12
19. 숫자 처리 함수  (0) 2022.03.12
SQL Developer theme(dracula) 적용  (0) 2022.03.11

ROUND()

반올림을 처리해주는 함수

SELECT 48.678 "COL1" -- 48.678
, ROUND(48.678, 2) "COL2" -- 48.68 (두 번째 파라미터 까지 유효한 표현이다)
, ROUND(48.674, 2) "COL3" -- 48.67
, ROUND(48.674, 1) "COL4" -- 48.7
, ROUND(48.674, 0) "COL5" -- 49
, ROUND(48.674) "COL6" -- 49 -- 두 번째 파라미터 값이 0일 경우 생략 가능
, ROUND(48.674, -1) "COL7" -- 50
, ROUND(68.674, -2) "COL8" -- 100
, ROUND(48.674, -3) "COL9" -- 0
FROM DUAL;
--==>> 48.678	46.68	46.67	46.7	47	47	50	0	0

 

TRUNC()

절삭을 처리해 주는 함수

SELECT 48.678 "COL1" -- 48.678
, TRUNC(48.678, 2) "COL2" -- 48.67 (두 번째 파라미터 까지 유효한 표현이다)
, TRUNC(48.674, 2) "COL3" -- 48.67
, TRUNC(48.674, 1) "COL4" -- 48.6
, TRUNC(48.674, 0) "COL5" -- 48
, TRUNC(48.674) "COL6" -- 48 -- 두 번째 파라미터 값이 0일 경우 생략 가능
, TRUNC(48.674, -1) "COL7" -- 40
, TRUNC(68.674, -2) "COL8" -- 0
, TRUNC(48.674, -3) "COL9" -- 0
FROM DUAL;

 

MOD()

나머지를 반환하는 함수

SELECT MOD(5, 2) "RESULT"
FROM DUAL;
--==>> 1

--> 5를 2로 나눈 나머지 결과값 반환

 

POWER()

제곱의 결과를 반환하는 함수

SELECT POWER(5, 3) "RESULT"
FROM DUAL;
--==>> 125
-- 5의 3승을 결과값으로 반환

 

SQRT()

루트 결과값을 반환하는 함수

SELECT SQRT(2) "RESULT"
FROM DUAL;
--==>> 1.41421356237309504880168872420969807857

--> 루트 2에 대한 결과값 반환

 

LOG()

로그 함수

SELECT LOG(10, 100) "COL1"
, LOG(10, 20) "COL2"
FROM DUAL;
--==>> 2	1.30102999566398119521373889472449302677

 

삼각함수

SELECT SIN(1), COS(1), TAN(1)
FROM DUAL;
--==>>
/*
0.8414709848078965066525023216302989996233
0.5403023058681397174009366074429766037354
1.55740772465490223050697480745836017308
*/
--> 각각 싸인, 코싸인, 탄젠트 결과값을 반환한다.

 

삼각함수의 역할수(범위 : -1 ~ 1)

SELECT ASIN(0.5), ACOS(0.5), ATAN(0.5)
FROM DUAL;
--==>> 0.52359877559829887307710723054658381405
-- 1.04719755119659774615421446109316762805
-- 0.4636476090008061162142562314612144020295

--> 각각 어싸인, 어코싸인, 어탄젠트 결과값을 반환한다.

 

SIGN()

서명, 부호, 특징

--> 연산 결과값이 양수이면 1, 0이면 0, 음수이면 -1을 반환한다.

SELECT SIGN(5-2) "COL1"
, SIGN(5-5) "COL2"
, SIGN(5-8) "COL3"
FROM DUAL;
--==>> 1	0	-1

--> 매출이나 수지와 관련하여 적자 및 흑자의 개념을 나타낼 때 사용된다.

 

ASCII(), CHR()

→ 서로 대응(상응)하는 함수

SELECT ASCII('A') "COL1"
, CHR(65) "COL2"
FROM DUAL;
--==>> 65 A

--> 『ASCII()』 : 매개변수로 넘겨받은 문자의 아스키코드 값을 반환한다. -- 『CHR()』 : 매개변수로 넘겨받은 아스키코드 값으로 해당 문자를 반환한다.

 

 

 

 

 

 

 


https://www.instagram.com/p/CaUs4HspaoS/?utm_source=ig_web_copy_link

 

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

21. 변환 함수  (0) 2022.03.12
20. 날짜 연산 함수  (0) 2022.03.12
SQL Developer theme(dracula) 적용  (0) 2022.03.11
18. LPAD(), LTRIM(), TRANSLATE(), REPLACE()  (0) 2022.03.11
17. LENGTH(), INSTR(), REVERSE()  (0) 2022.03.10

SQL을 공부하면서 SQL Developer을 이용하는데 테마를 변경하고 싶어서 찾아보게되었습니다.

 

SQL Developer를 닫아야 합니다. SQL Developer가 열려 있는 동안 파일을 수정하면 변경 내용이 저장되지 않는다고 합니다.

 

아래의 경로로 들어갑니다.

Windows:

%APPDATA%\\SQL Developer\\systemn.n.n.n.n.n\\o.ide.n.n.n.n.n.n.n

Linux or Mac OS X:

~/.sqldeveloper/systemn.n.n.n.n.n/o.ide.n.n.n.n.n.n.n

 

저는 %appdata%를 검색해서 들어갔습니다.

저의 경로는 아래와 같았습니다.

C:\Users\로그인계정\AppData\Roaming\SQL Developer\system숫자\o.ide.숫자

 

경로로 들어가면 dtcache.xml이 있습니다.

dtcache.xml 파일 내에서 <schemeMap> 태그를 찾습니다.

 

아래에 Dracula.xml(각자 원하는 테마) 에 내용을 붙어넣습니다.

 

저는 dracula 테마를 적용했고 아래에 테마 주소가 있습니다.

(https://github.com/dracula/oracle-sql-developer)

XML이 깨지지 않도록 주의해야 합니다.

 

Tools(도구) → Preferences(환경설정)에 들어가서

Code Editor(코드편집기) → PL/SQL Synth Colors(구문 색상)에서 설정해주면 됩니다!

 

 

 

 

 

 

 


https://www.instagram.com/p/CaavmeXhS20/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

20. 날짜 연산 함수  (0) 2022.03.12
19. 숫자 처리 함수  (0) 2022.03.12
18. LPAD(), LTRIM(), TRANSLATE(), REPLACE()  (0) 2022.03.11
17. LENGTH(), INSTR(), REVERSE()  (0) 2022.03.10
16. CONCAT(), SUBSTR()  (0) 2022.03.10

 

LPAD()

  • Byte 를 확보하여 왼쪽부터 문자로 채우는 기능을 가진 함수
SELECT 'ORACLE' "COL1"
     , LPAD('ORACLE', 10. '*') "COL2"
  FROM DUAL;
--==>> ORACLE	****ORACLE

1 10Byte 공간을 확보(두 번째 파라미터)

2 확보한 공간에 ’ORACLE’문자열은 담는다(첫 번째 파라미터)

3 남아있는 Byte 공간을 왼쪽부터 세 번째 파라미터 값으로 채운다.

RPAD()

  • Byte를 확보하여 오른쪽부터 문자로 채우는 기능을 가진 함수
SELECT 'ORACLE' "COL1"
     , RPAD('ORACLE', 10. '*') "COL2"
  FROM DUAL;
--==>> ORACLE	ORACLE****

LTRIM()

첫 번째 파라미터 값에 해당하는 문자열을 대상으로 왼쪽부터 연속적으로 등장하는 두 번째 파라미터 값에서 지정한 글자와 같은 글자가 등장할 경우 이를 제거한 결과값을 반환한다.

단, 완성형으로 처리되지 않는다.

SELECT 'ORAORAORACLEORACLE' "COL1"
     , LTRIM('ORAORAORACLEORACLE', 'ORA') "COL2"
     , LTRIM('AAAAAAAAAAAAAAAAORAORAORACLEORACLE', 'ORA') "COL3" -- (앞에 A도 깎음 ORA에 A있으니까)
     , LTRIM('ORAoRAORACLEORACLE', 'ORA') "COL4"
     , LTRIM('ORAORA ORACLEORACLE', 'ORA') "COL5"
     , LTRIM('             ORACLE', ' ') "COL6"             -- (이렇게 공백 제거 함수로 많이 쓰임)
     , LTRIM('             ORACLE') "COL7"                  -- (공백의 경우 생략 가능)
FROM DUAL;
--==>> 
/*
ORAORAORACLEORACLE	
CLEORACLE	
CLEORACLE	
oRAORACLEORACLE	
 ORACLEORACLE	
ORACLE	
ORACLE
*/

RTRIM()

첫 번째 파라미터 값에 해당하는 문자열을 대상으로 오른쪽부터 연속적으로 등장하는 두 번째 파라미터 값에서 지정한 글자와 같은 글자가 등장할 경우 이를 제거한 결과값을 반환한다. 단, 완성형으로 처리되지 않는다.

TRANSLATE()

1:1로 바꿔준다.

SELECT TRANSLATE('MY ORACLE SERVER'
, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
, 'Abcdefghijklmnopqrstuvwxyz') "RESULT"
FROM DUAL;
--==>> my orAcle server

SELECT TRANSLATE('010-4139-4969'
, '0123456789'
, '영일이삼사오육칠팔구') "RESULT"
FROM DUAL;
--==>> 영일영-사일삼구-사구육구

REPLACE()

SELECT REPLACE('MY ORACLE SERVER ORAHOME', 'ORA', '오라') "RESULT"
FROM DUAL;
--==>> MY 오라CLE SERVER 오라HOME

 

 

 

 

 

 

 

 

 


https://www.instagram.com/p/CatQUrJLBcp/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

19. 숫자 처리 함수  (0) 2022.03.12
SQL Developer theme(dracula) 적용  (0) 2022.03.11
17. LENGTH(), INSTR(), REVERSE()  (0) 2022.03.10
16. CONCAT(), SUBSTR()  (0) 2022.03.10
15. ORDER BY 절  (0) 2022.03.09

LENGTH() 글자 수 / LENGTHB() 바이트 수

SELECT ENAME "COL1"
     , LENGTH(ENAME) "COL2"
     , LENGTHB(ENAME) "COL3"
  FROM EMP;
--==>>
/*
SMITH	5	5
	:
FORD	4	4
MILLER	6	6
*/

 

INSTR()

SELECT 'ORACLE ORAHOME BIORA' "COL1"
     , INSTR('ORACLE ORAHOME BIORA', 'ORA', 1, 1) "COL2"        --1
     , INSTR('ORACLE ORAHOME BIORA', 'ORA', 1, 2) "COL3"        --8
     , INSTR('ORACLE ORAHOME BIORA', 'ORA', 2, 1) "COL4"        --8
     , INSTR('ORACLE ORAHOME BIORA', 'ORA', 2) "COL5"           --8
     , INSTR('ORACLE ORAHOME BIORA', 'ORA', 2, 3) "COL6"        --0
     , INSTR('ORACLE ORAHOME BIORA', 'ORA', -3) "COL7"          --18
     , INSTR('ORACLE ORAHOME BIORA', 'ORA', -4) "COL8"          --8
     , INSTR('ORACLE ORAHOME BIORA', 'ORA', -4, 2) "COL9"       --1
FROM DUAL;
  • 첫 번째 파라미터 값에 해당하는 문자열(대상 문자열, TARGET)에서
  • 두 번째 파라미터 값을 통해 넘겨준 문자열이 등장하는 위치를 찾음
  • 세 번째 파라미터 값은 찾기 시작하는 위치(→ 음수의 경우 뒤에서부터 스캔)
  • 네 번째 파라미터 값은 몇 번째 등장하는 값을 찾을 것인지에 대한 설정(→ 1은 생략 가능)

 

REVERSE()

SELECT 'ORACLE' "COL1"
     , REVERSE('ORACLE') "COL2"
     , REVERSE('오라클') "COL3" 
  FROM DUAL;
--==>> ORACLE	ELCARO	???
  • 대상 문자열을 거꾸로 반환(한글은 제외)

 

 

 

 

 

 


https://www.instagram.com/p/CaYfCR9pHLG/?utm_source=ig_web_copy_link

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.


 

'SQL > Oracle' 카테고리의 다른 글

SQL Developer theme(dracula) 적용  (0) 2022.03.11
18. LPAD(), LTRIM(), TRANSLATE(), REPLACE()  (0) 2022.03.11
16. CONCAT(), SUBSTR()  (0) 2022.03.10
15. ORDER BY 절  (0) 2022.03.09
14. COMMIT / ROLLBACK, DML구문  (0) 2022.03.07