- 22. CASE 구문(조건문, 분기문) 2022.03.12
- 21. 변환 함수 2022.03.12
- 19. 숫자 처리 함수 2022.03.12
- SQL Developer theme(dracula) 적용 2022.03.11
- 18. LPAD(), LTRIM(), TRANSLATE(), REPLACE() 2022.03.11
- 17. LENGTH(), INSTR(), REVERSE() 2022.03.10
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.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
*/

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.
이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.
'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()』 : 매개변수로 넘겨받은 아스키코드 값으로 해당 문자를 반환한다.

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.
이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.
'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(구문 색상)에서 설정해주면 됩니다!


부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.
이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.
'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

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.
이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.
'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 ???
- 대상 문자열을 거꾸로 반환(한글은 제외)

부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.
이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.
'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 |