• 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

날짜 관련 세션 설정 변경

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

 

날짜 연산의 기본 단위는 DAY(일수)

SELECT SYSDATE "COL1" -- 2022-02-22 09:44:04
, SYSDATE + 1 "COL2" -- 2022-02-23 09:44:04 → 하루 뒤
, SYSDATE - 2 "COL3" -- 2022-02-20 09:44:04 → 이틀 전
, SYSDATE - 30 "COL4" -- 2022-01-23 09:44:04 → 30일 전
FROM DUAL;

 

시간 단위 연산

SELECT SYSDATE "COL1" -- 2022-02-22 09:46:21
, SYSDATE + 1/24 "COL2" -- 2022-02-22 10:46:21 → 한 시간 뒤
, SYSDATE - 2/24 "COL3" -- 2022-02-22 07:46:21 → 두 시간 전
FROM DUAL;

 

현재 시간과 현재 시간 기준 1일 2시간 3분 4초 후를 조회하는 쿼리문을 구성해보면 다음과 같다.

방법 1.

SELECT SYSDATE "현재 시간"
     , SYSDATE + 1 + (2/24) + (3/(24*60)) + (4/(24*60*60)) "연산 후 시간"
FROM DUAL;
--==>> 2022-02-22 10:17:37
-- 2022-02-23 12:20:41

방법 2

SELECT SYSDATE "현재 시간"
     , SYSDATE + ((1*24*60*60) + (2*60*60) + (3*60) + 4) / (24*60*60) "연산 후 시간"
FROM DUAL;
--==>> 2022-02-22 10:19:20
-- 2022-02-23 12:22:24

 

날짜 - 날짜 = 일수

SELECT TO_DATE('2022-06-20', 'YYYY-MM-DD') - TO_DATE('2022-02-22', 'YYYY-MM-DD') "RESULT"
FROM DUAL;
--==>> 118

 

데이터 타입의 변환

SELECT TO_DATE('2022-06-20', 'YYYY-MM-DD') "RESULT"
  FROM DUAL;
--==>> 2022-06-20 00:00:00

SELECT TO_DATE('2022-06-35', 'YYYY-MM-DD') "RESULT"
  FROM DUAL;
--==>> 에러 발생
--     ORA-01847: day of month must be between 1 and last day of month

※ TO_DATE() 함수를 통해 문자 타입을 날짜 타입으로 변환을 수행하는 과정에 해당 날짜에 대한 유효성 검사가 이루어진다.

 

ADD_MONTHS()

  • 개월 수를 더해주는 함수
SELECT SYSDATE "COL1"
     , ADD_MONTHS(SYSDATE, 2) "COL2"
     , ADD_MONTHS(SYSDATE, -3) "COL3"
  FROM DUAL;
--==>>
/*
2022-02-22 10:30:04     → 현재
2022-04-22 10:30:04     → 2개월 후
2021-11-22 10:30:04     → 3개월 전
*/

 

MONTHS_BETWEEN()

  • 첫 번째 인자값에서 두 번째 인자값을 뺀 개월 수를 반환한다.
SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2002-05-31', 'YYYY-MM-DD')) "RESULT"
  FROM DUAL;
--==>> 236.723857526881720430107526881720430108

결과값의 부호가 『-』인 경우에는 첫 번째 인자값 날짜보다 두 번째 인자값 날짜가 『미래』임

 

NEXT_DAY()

SELECT NEXT_DAY(SYSDATE, '토') "COL1" -- 돌아오는 가장 빠른 토요일 구함
     , NEXT_DAY(SYSDATE, '월') "COL2"
FROM DUAL;
--==>> 2022-02-26 10:38:22
-- 2022-02-28 10:38:22

ALTER SESSION SET NLS_DATE_LANGUAGE = 'ENGLISH';    -- 영어로 변경

SELECT NEXT_DAY(SYSDATE, '토') "COL1"
FROM DUAL;
--==>> 에러 발생 (언어가 영어여서)
--     ORA-01846: not a valid day of the week

SELECT NEXT_DAY(SYSDATE, 'SAT') "COL1"
FROM DUAL;
--==>> 2022-02-26 10:38:22	

ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN';     -- 한국어로 변경

 

LAST_DAY()

  • 해당 날짜가 포함되어있는 그 달의 마지막 날을 반환한다.
SELECT LAST_DAY(SYSDATE) "COL1"
     , LAST_DAY(TO_DATE('2020-02-10', 'YYYY-MM-DD')) "COL2"
  FROM DUAL;
--==>>
/*
2022-02-28 10:44:54
2020-02-29 00:00:00
*/

 

 

참고로 세션 설정 변경

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';

※ 날짜 데이터를 대상으로 반올림, 절삭 등의 연산을 수행할 수 있다.

 

날짜 반올림

SELECT SYSDATE "COL1" -- 2022-02-22 → 기본 현재 날짜
     , ROUND(SYSDATE, 'YEAR') "COL2" -- 2022-01-01 → 년도까지 유효한 데이터(상반기/하반기 기준)
     , ROUND(SYSDATE, 'MONTH') "COL3" -- 2022-03-01 → 월까지 유효한 데이터 (15일 기준)
     , ROUND(SYSDATE, 'DD') "COL4" -- 2022-02-23 → 일까지 유효한 데이터 (정오 기준)
     , ROUND(SYSDATE, 'DAY') "COL5" -- 2022-02-20 → 일까지 유요한 데이터 (수요일 정오 기준)
  FROM DUAL;

 

날짜 절삭

SELECT SYSDATE "COL1" -- 2022-02-22 → 기본 현재 날짜
     , TRUNC(SYSDATE, 'YEAR') "COL2" -- 2022-01-01 → 년도까지 유효한 데이터
     , TRUNC(SYSDATE, 'MONTH') "COL3" -- 2022-02-01 → 월까지 유효한 데이터
     , TRUNC(SYSDATE, 'DD') "COL4" -- 2022-02-22 → 일까지 유효한 데이터
     , TRUNC(SYSDATE, 'DAY') "COL5" -- 2022-02-20 → 그 전 주에 해당하는 일요일
  FROM DUAL;

 

 

 

 

 

 

 

 

 


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

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

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


 

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

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

CONCAT()

  • 문자열을 결합하는 기능을 가진 함수
  • 오로지 2개의 문자열만 결합가능
SELECT ENAME || JOB "COL1"
     , CONCAT(ENAME, JOB) "COL2"
  FROM EMP;
-- COL1와 COL2 결과 같다
--==>>
/*
SMITHCLERK	    SMITHCLERK
     :
MILLERCLERK	    MILLERCLERK
*/

SELECT ENAME|| JOB || DEPTNO "COL1"
     , CONCAT(CONCAT(ENAME, JOB), DEPTNO) "COL2"
  FROM EMP;
/*
SMITHCLERK20	    SMITHCLERK20
     :
MILLERCLERK10	    MILLERCLERK10
*/
  • 내부적인 형 변환이 일어나며 결합을 수행함
  • CONCAT()은 문자열과 문자열을 결합시켜주는 함수이지만 내부적으로 숫자나 날짜를 문자로 바꾸어주는 과정이 포함되어 있다.

 

SUBSTR() 추출 갯수 기반 / SUBSTRB() 추출 바이트 기반

SELECT ENAME "COL1"
     , SUBSTR(ENAME, 1, 2) "COL2"
  FROM EMP;
  • 문자열을 추출하는 기능
  • 첫 번째 파라미터 값은 대상 문자열(추출 대상, TARGET)
  • 두 번째 파라미터 값은 추출을 시작하는 위치(인덱스는 1부터 시작)
  • 세 번째 파라미터 값은 추출할 문자열의 갯수(생략 시 끝까지)

 

 

 

 

 

 

 


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

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

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


 

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

18. LPAD(), LTRIM(), TRANSLATE(), REPLACE()  (0) 2022.03.11
17. LENGTH(), INSTR(), REVERSE()  (0) 2022.03.10
15. ORDER BY 절  (0) 2022.03.09
14. COMMIT / ROLLBACK, DML구문  (0) 2022.03.07
13. LIKE, %, _  (0) 2022.03.07
SELECT ENAME "사원명", DEPTNO "부서번호", JOB "직종"
     , SAL "급여", SAL*12+NVL(COMM, 0) "연봉"
  FROM EMP
ORDER BY DEPTNO ASC;          -- DEPTNO -> 정렬 기준
															-- ASC    -> 정렬 유형 : 오름차순

SELECT ENAME "사원명", DEPTNO "부서번호", JOB "직종"
     , SAL "급여", SAL*12+NVL(COMM, 0) "연봉"
  FROM EMP
ORDER BY DEPTNO;              -- 오름차순은 생략 가능

SELECT ENAME "사원명", DEPTNO "부서번호", JOB "직종"
     , SAL "급여", SAL*12+NVL(COMM, 0) "연봉"
  FROM EMP
ORDER BY DEPTNO DESC;         -- DESC   -> 정렬 유형 : 내림차순

SELECT ENAME "사원명", DEPTNO "부서번호", JOB "직종"
     , SAL "급여", SAL*12+NVL(COMM, 0) "연봉"
  FROM EMP
ORDER BY 2;        -- 부서번호 오름차순

→ EMP 테이블이 갖고 있는 테이블의 고유한 컬럼 순서(2 → ENAME)이 아니라 SELECT 처리되는 두 번째 컬럼(2 → DEPTNO, 부서번호)를 기준으로 정렬된다.

 

SELECT ENAME, DEPTNO, JOB, SAL
  FROM EMP
ORDER BY 2, 3, 4 DESC;

→ 2 : DEPTNO 기준 오름차순

→ 3 : JOB 기준 오름차순

→ 4 DESC : SAL 기준 내림차순

 

 

 

 

 

 

 


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

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

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


 

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

17. LENGTH(), INSTR(), REVERSE()  (0) 2022.03.10
16. CONCAT(), SUBSTR()  (0) 2022.03.10
14. COMMIT / ROLLBACK, DML구문  (0) 2022.03.07
13. LIKE, %, _  (0) 2022.03.07
12. 날짜 변환 함수, BETWEEN A AND B  (0) 2022.03.07
SELECT *
FROM TBL_DEPT;
--==>>
/*
10	ACCOUNTING	NEW YORK
20	RESEARCH	DALLAS
30	SALES	    CHICAGO
40	OPERATIONS	BOSTON
*/

 

데이터 입력

INSERT INTO TBL_DEPT VALUES(50, '개발부', '서울');
  • 이 데이터는 TBL_DEPT 테이블이 저장되어 있는 하드디스크상에 저장된것이 아니라 메모리(RAM) 상에 입력된 것임
  • 이를 하드디스크상에 물리적으로 저장하기 위해서는 COMMIT을 수행해야 한다.

 

커밋

COMMIT;

 

롤백(ROLLBACK)

ROLLBACK;
  • COMMIT을 실행한 이후로 DML 구문(INSERT, UPDATE, DELETE)를 통해 변경된 데이터를 취소할 수 있다.
  • DML 구문을 사용한 후 COMMIT 을 하고 나서 ROLLBACK을 실행해봐야 아무 소용 없다.

 

데이터 수정(UPDATE)

UPDATE TBL_DEPT
   SET DNAME = '연구부', LOC = '경기'
 WHERE DEPTNO = 50;

 

데이터 삭제(DELETE)

DELETE TBL_DEPT
 WHERE DEPTNO = 50;
-- 이렇게 바로 지우기보다는

-- 아래처럼 확인하고 지우기
SELECT *
  FROM TBL_DEPT
 WHERE DEPTNO = 50;

DELETE
  FROM TBL_DEPT
 WHERE DEPTNO = 50;

 

 

 

 

 

 


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

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

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


 

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

16. CONCAT(), SUBSTR()  (0) 2022.03.10
15. ORDER BY 절  (0) 2022.03.09
13. LIKE, %, _  (0) 2022.03.07
12. 날짜 변환 함수, BETWEEN A AND B  (0) 2022.03.07
11. UPPER(), LOWER(), INITCAP()  (0) 2022.03.07

LIKE

SELECT *
  FROM TBL_SAWON
 WHERE SANAME = '홍길동';

SELECT *
  FROM TBL_SAWON
 WHERE SANAME LIKE '홍길동';

둘의 결과는 같음

 

 

LIKE와 함께 사용되는 %는 모든 글자 의미

LIKE와 함께 사용되는 _는 한 글자 의미

SELECT *
  FROM TBL_SAWON
 WHERE SANAME LIKE '김__';

SELECT *
  FROM TBL_SAWON
 WHERE SANAME LIKE '김%';

-- 이 라는 글자가 하나라도 포함되어 있는 항목 조회
SELECT SANO "사원번호", SANAME "사원명", SAL "급여"
  FROM TBL_SAWON
 WHERE SANAME LIKE '%이%';

-- 이 라는 글자가 두 번 들 어있는 항목 조회
SELECT SANO "사원번호", SANAME "사원명", SAL "급여"
  FROM TBL_SAWON
 WHERE SANAME LIKE '%이%이%';

 

참고로 데이터베이스 설계 과정에서 성과 이름을 분리하여 처리해야할 업무 계획이 있다면 테이블에서 성 컬럼과 이름 컬럼을 분리해서 구성해야 한다

왜냐하면 2글자 성이 존재하기 때문(남궁, 선우)

 

 

『99.99%』라는 글자가 포함된 행의 데이터 조회

SELECT *
  FROM TBL_WATCH
WHERE BIGO LIKE '%99.99\\%%' ESCAPE '\\';
  • ESCAPE로 정한 문자의 다음 한 글자를 와이들카드에서 탈출시킴
  • 일반적으로 사용빈도가 낮은 특수문자를 사용함

 

 

 

 


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

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

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


 

 

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

15. ORDER BY 절  (0) 2022.03.09
14. COMMIT / ROLLBACK, DML구문  (0) 2022.03.07
12. 날짜 변환 함수, BETWEEN A AND B  (0) 2022.03.07
11. UPPER(), LOWER(), INITCAP()  (0) 2022.03.07
10. NVL, COALESCE, 컬럼연결(결합)  (0) 2022.03.06