Heidong 2021. 8. 9. 00:32
반응형

ABS : 절대 값 구하기

SELECT ABS(20), ABS(-20) FROM dual;  

-- 20 20

 

SIGN : 양수, 음수, 0 구분하기

SELECT SIGN(20), SIGN(-20), SIGN(0) FROM dual;

20은 양수라서 1을 반환

-20은 음수라서 -1을 반환

0은 0을 반환한다.

 

 

MOD : 나머지 구하기

SELECT MOD(10,3) FROM dual;

10을 3으로 나누었을때의 나머지를 구한다.

 

 

ROUND : 반올림 하기

 

SELECT ROUND(15.6933, 2) FROM dual;

소수점 한자리 수 까지 표현 하겠다는 뜻

 

SELECT ROUND(15.693, -1) FROM dual;

일의 자리에서 반올림 하겠다는 뜻 (=20이 된다.)

 

 

TRUNC : 절삭하기 (내림)

SELECT TRUNC(15.6933, 2) FROM dual;

 

= 15.69

 

SELECT TRUNC(15.693, 0) FROM dual;

= 15

 

 

※문자 함수

 

LOWER

= 모든 영문자를 소문자로 바꾼다.

SELECT LOWER('KOREA seoul 2021') FROM dual;

 

 

SELECT * FROM col  WHERE tname = 'EMP';
SELECT * FROM col  WHERE LOWER(tname) = 'emp';

col에서 EMP의 항목들을 가져올때 LOWER를 사용하면 소문자로 써도 인식을해서 EMP를 가져온다

 

 

 

UPPER

모든 영문자를 대문자로.

SELECT UPPER('KOREA seoul 2021') FROM dual;

 

 

INITCAP

각 영어 단어에서 첫글자는 대문자 나머지는 소문자로 바꿔준다.

SELECT INITCAP('KOREA seoul 2021') FROM dual;

 

 

SUBSTR

문자열에서 문자열 추출.

 

SELECT SUBSTR('seoul korea', 7, 3) FROM dual;

7번째 위치부터 3개를 가져온다.

kor이 나온다.

 

 

SELECT SUBSTR('seoul korea', -5, 3) FROM dual;

뒤에서 5번째 위치부터 3개의 글자를 가져온다

kor이 나온다.

 

SELECT SUBSTR('seoul korea', 7) FROM dual;

7번째 위치부터 남은 문자열 모두를 가져온다.

= korea

 

 

 

LENGTH

문자열의 길이 반환 (문자 개수)

SELECT LENGTH('대한민국') FROM dual;

= 4

 

SELECT LENGTHB('대한민국') FROM dual;

문자열의 바이트 수를 반환 (한글은 글자당 3바이트)

= 12 반환

 

 

REPLACE

문자열을 다른 문자열로 바꿀 수 있음.

 

SELECT REPLACE('seoul korea', 'seoul', 'busan') FROM dual;

seoul korea에서 seoul을 busan으로 바꾼다.

 

 

SELECT REPLACE('12345123458525', '5') FROM dual;

문자 제거도 가능

5를 전부 제거해준다.

 

 

~~부를 ~~팀으로 이름 전부 바꿔주기.

SELECT name, SUBSTR(dept, 1, LENGTH(dept)-1) || '팀' dept FROM emp;

dept의 1번째 인덱스 부터 총 길이의 전 인덱스까지 SUBSTR로 문자를 가져와서 ||를 활용해서 팀자를 붙여준다.

 

 

CONCAT

문자열 결합.

 

SELECT CONCAT('대한', '민국') FROM dual;

같은 기능의 ||

SELECT '대한' ||  '민국' FROM dual;

 

 

LPAD

남는 공간을 특정 문자로 채우고 싶을때 사용 LPDA는 왼쪽 공간을 채울때

RPAD

RPAD는 오른쪽 공간을 채울 때

 

SELECT  LPAD('korea', 12, '*') FROM dual;

-- *******korea
SELECT  RPAD('korea', 12, '*') FROM dual;

-- korea*******

 

 

SELECT name, RPAD(SUBSTR(rrn, 1, 8), 14, '*') rrn FROM emp;

주민번호 뒷자리는 *로 표시

 

 

TRIM

':' || TRIM('    우리    나라    ') || ':'  FROM dual;

우리 나라의 양옆 공백을 다 날린다

그러나 가운데 공백은 못없앰.

 

LTRIM

SELECT ':' || LTRIM('    우리    나라    ') || ':'  FROM dual;

왼쪽 공백만 없앰.

RTRIM

SELECT ':' || RTRIM('    우리    나라    ') || ':'  FROM dual;

오른쪽 공백만 없앰.

 

 

TRANSLATE

SELECT TRANSLATE('ababbcca', 'c', 'd') FROM dual;

문자의 뜻 그대로 문자열을 바꿔준다.

ababbcca 에서 c를 d로 바꾸어 준다.

SELECT TRANSLATE('2KAB35CC','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '0123456789') FROM dual;

문자만 다 날리고 숫자만 남기는 것도 가능하다.

 

 

NVL(expr1, expr2)

expr1이 NULL이면 expr2를 반환하고 그렇지 않으면 expr1을 반환한다.

 

주로 NULL값에 다른 값을 줄때 사용 ex) 0

SELECT name, NVL(tel, '전화없음') FROM emp;

이렇게 하면 tel이 NULL 값인 사람들은 전화없음 으로 표시가 된다.

 

NVL2(expr1, expr2, expr3)

expr1이 NULL이 아니면 expr2를 반환하고 NULL이면 expr3을 반환한다.

SELECT name, NVL2(tel, tel, '전화없음') tel FROM emp;

위에 NVL 예제 소스랑 똑같은 결과이다.

반응형