본문으로 바로가기

[DATABASE][문자 함수와 숫자 함수]

category DATABASE 2018. 4. 19. 08:37


DATABASE

Dual 테이블과 sql 함수분류

문자 함수

숫자 함수


-Dual 테이블과 sql 함수분류


Dual 사용방법 (미리 만들어져있는)

형식 SQL>DESC DUAL

DUAL 테이블은 DUMMY라는 단 하나의 컬럼으로 구성되어 있습니다
(이 컬럼에는 최대 길이는 1입니다.) 
DUAL 테이블은 DUMMY라는 단 하나의 컬럼에 X라는 단 하나의 로우만을

 저장하고 있으나 이 값은 아무런 의미가 없습니다


문자 함수

실습을 다해볼수 없으니 몇 가지는 출력결과를 올리고 몇가지는 안올릴테니 안올린것은 직접 출력 해보십쇼 !


UPPER 
=함수는 입력한 문자값을 대문자로 변환하는 함수입니다
형식=SELECT 'Welcome to Oracle', UPPER('Welcome to Oracle') FROM DUAL;



LOWER 
=함수는 문자열을 모두 소문자로 변경합니다

SELECT 'Welcome to Oracle', LOWER('Welcome to Oracle')FROM DUAL;


INITCAP

=함수는 문자열의 이니셜만 대문자로 변경합니다

SELECT 'WELCOME TO ORACLE',INITCAP('WELCOME TO ORACLE')FROM DUAL;


LENGTH 
=함수는 컬럼에 저장된 데이터 값이 몇 개의 문자로 구성되었는지 길이를 알려주는 함수입니다.

SELECT LENGTH('Oracle'), LENGTH('오라클')FROM DUAL;




LENGTHB

=이번에 살펴볼 LENGTHB 함수는 바이트 수를 알려주는 함수입니다. LENGTH 함수와 어떤 차이가 있는지 살펴봅시다

SELECT LENGTHB('Oracle'), LENGTHB('오라클')FROM DUAL;




*SUBSTR SUBSTRB

=함수는 대상 문자열이나 칼럼의 자료에서 시작위치부터 선택 개수만큼의 문자를 추출합니다

SUBSTR(대상, 시작위치, 추출할 개수

SELECT SUBSTR('Welcome to Oracle', 4, 3)FROM DUAL;



시작위치 인자 값을 음수 값으로 줄 수 있는데 이때는 문자열의 앞쪽이 아닌 뒤 쪽에서부터 세어서 시작위치를 잡습니다.

SELECT SUBSTR('Welcome to Oracle', -4, 3)FROM DUAL;



SUBSTRB 

=함수는 문자열을 추출하기 위해서 문자를 셀 때 문자의 개수가 아닌 그 문자가 메모리에 저장되는 바이트 수로 셉니다. 

영문자는 1자는 메모리에 1바이트로 저장되기 때문에 SUBSTR 함수와 SUBSTRB 함수 어떤 함수를 사용하여도 결과가 동일합니다. 

SELECT SUBSTR('Welcome To Oracle', 3, 4),SUBSTRB('Welcome To Oracle', 3, 4)FROM DUAL;




한글 1자는 2바이트를 차지하기 때문에 SUBSTR 함수와 SUBSTRB 함수의 결과가 달라집니다.

SELECT SUBSTR('웰컴투오라클', 3, 4), SUBSTRB('웰컴투오라클', 3, 4)FROM DUAL;





SUBSTR 함수를 이용해서 입사일을 저장하고 있는 HIREDATE 컬럼에서 첫 글자부터 2개를 추출하면 됩니다.

입사한 달만 출력하려면 HIREDATE 컬럼에서 네번째 글자부터 2개를 추출하면 됨

SELECT SUBSTR(HIREDATE, 1, 2) 년도, SUBSTR(HIREDATE, 4, 2) FROM EMP;



9월에 입사한 사원을 출력해보시오.

SELECT *FROM HR.EMPLOYEES WHERE SUBSTR(HIRE_DATE, 4, 2)='09';


INSTR

=함수는 대상 문자열이나 칼럼에서 특정 문자가 나타나는 위치를 알려줍니다

문자열 ‘Welcome to Oracle''O'가 저장된 위치가 얼마인지 알고 싶을 때에는 INSTR 함수를 사용하여 다음과 같이 쿼리문을 작성할 수 있습니다

SELECT INSTR('WELCOME TO ORACLE', 'O')FROM DUAL;




INSTR(대상, 찾을글자, 시작위치, _번째_발견


구문에서 보듯이 앞선 예제에서는 '시작위치''몇 번째 발견'을 생략한 채 사용한 것으로 이들 값을 생략하면 모두 1로 간주되므로 시작 위치도 1이고 첫 번째 발견된 위치를 반환합니다

SELECT INSTR('WELCOME TO ORACLE', 'O', 6, 2)FROM DUAL;


INSTRB 함수 역시 SUBSTRB 함수에서와 마찬가지로 문자의 위치를 알아내기 위한 기준으로 바이트합니다.영문자는 1 글자가 1 바이트이므로 INSTR 함수와 INSTRB 함수의 결과가 동일합니다.그러므로 1 글자가 2 바이트인 한글 상수로 예를 들어보도록 합시다

SELECT INSTR('데이터베이스', '', 3, 1),INSTRB('데이터베이스', '', 3, 1)

FROM DUAL;




LPAD

=(LEFT PADDING) 함수는 칼럼이나 대상 문자열을 명시된 자릿수에서 오른쪽에 나타내고, 남은 왼쪽 자리를 특정 기호로 채웁니다

SELECT LPAD('Oracle', 20, '#')FROM DUAL;


RPAD

=(RIGHT PADDING) 함수는 반대로 칼럼이나 대상 문자열을 명시된 자릿수에서 왼쪽에 나타내고, 남은 오른쪽 자리를 특정 기호로 채웁니다

SELECT RPAD('Oracle', 20, '#')FROM DUAL;


LTRIM

=함수는 문자열의 왼쪽()의 공백 문자들을 삭제합니다

SELECT LTRIM(' Oracle ')FROM DUAL;


RTRIM 

=함수 역시 다음과 같이 기술하면 공백 문자를 잘라냅니다

SELECT RTRIM(' Oracle ')FROM DUAL;


TRIM

=함수는 칼럼이나 대상 문자열에서 특정 문자가 첫 번째 글자이거나 마지막 글자이면 잘라내고 남은 문자열만 반환합니다.

SELECT TRIM('a' FROM 'aaaaOracleaaaa')FROM DUAL;


다음과 같이 기술하면 공백 문자를 잘라냅니다

SELECT TRIM(' Oracle ')FROM DUAL;


숫자 함수


ABS

 =함수는 절대값을 구합니다. 절대값은 방향은 없고 크기만 있는 것으로서 주어진 데이터가 음수일 경우 양수로 표현합니다.

-10 에 대한 절대값을 구해 봅시다.

 SELECT -10, ABS(-10)FROM DUAL;



FLOOR 

=함수는 소수점 아래를 버립니다. 34.5678FLOOR 함수에 적용하면 34가 구해집니다

SELECT   34.5678,  FLOOR(34.5678)FROM DUAL;




ROUND

=34.5678를 반올림하면 35입니다. 이와 같이 반올림한 결과를 구하기 위한 함수로 오라클에서는 ROUND가 제공됩니다

SELECT 34.5678, ROUND(34.5678)FROM DUAL;




ROUND 함수는 지정한 자릿수에서 반올림을 할 수 있도록 자릿수를 지정할 수 있습니다

ROUND 함수의 두 번째 인자 값이 2이면 소수점 이하 세 번째 자리에서 반올림하여 소수점 이하 두 번째 자리까지 표시합니다. , ROUND(34.5678, 2)의 결과는 34.57이 됩니다.

ROUND(대상, 자릿수) 

SELECT 34.5678, ROUND(34.5678, 2)

FROM DUAL;




자릿수에 음수를 지정할 수 있는데 이럴 경우 소수점 이하가 아니라 반대쪽인 일단위, 십단위, 백단위 순으로 거슬러 올라가게 되며,인자 값이 양수일 때와는 달리 해당 자리에서 반올림이 일어나게 됩니다

SELECT 34.5678, ROUND(34.5678, -1)FROM DUAL;


TRUNC

=함수는 지정한 자리 수 이하를 버린 결과를 구해주는 함수입니다

SELECT TRUNC(34.5678, 2), TRUNC(34.5678, -1), TRUNC(34.5678)FROM DUAL;




MOD 

=함수는 나누기 연산을 한 후에 구한 몫이 아닌 나머지를 결과로 되돌려주는 함수입니다

SELECT MOD (27, 2), MOD (27, 5), MOD (27, 7)FROM DUAL;