본문 바로가기

개발 관련 지식/오라클(Oracle)

[Oracle] 오라클 기본 함수

* 오라클 기본 함수

 

 

* 숫자형 함수

- ABS(n) : n의 숫자를 절대값으로 반환

- SIGN(n) : n이 양수인지 음수인지의 여부를 반환(n>0 : 1 , n<0 : -1 , n=0 : 0)

- ROUND(n, i) : n을 소수점 이하 i+1 번째 자리에서 반올림한 결과를 반환

- TRUNC(n1, n2) : n1 값을 n2 번째 자리에서 잘라낸다. 소수점을 기준으로 양수이면 오른쪽, 음수이면 왼쪽을 잘라낸다

- CEIL(n) : n과 같거나 큰 가장 작은 정수를 반환

- FLOOR(n) : n보다 작거나 같은 가장 큰 정수를 반환

- MOD(n2, n1) : n2를 n1으로 나눈 나머지 값을 반환

- REMAINDER(n2, n1) : n2를 n1으로 나눈 나머지 값을 반환. MOD와 다른 점은 MOD의 경우 파라미터로 NUMBER 타입만 올 수 있는 반면 REMAINDER 는 NUMBER 뿐만 아니라 BINARY_FLOAT 과 BINARY_DOUBLE 타입도 올 수 있다

- POWER(n2, n1) : n2의 n1 제곱값을 반환

- SQRT(n) : n의 제곱근 값을 반환

 

 

* 문자형 함수

- CONCAT(char1, char2) : char1, char2 두 문자열을 연결하여 그 결과를 반환

- INITCAP(char) : char 의 첫 문자를 대문자로 바꾸는 함수로써 첫 문자만을 대문자로 변환하며 나머지 문자들은 대소문자에 관계없이 모두 소문자로 변환

- LOWER(char)UPPER(char) : LOWER는 char 모든 문자를 소문자로, UPPER는 대문자로 변환

- LPAD(expr1, n [, expr2])RPAD(expr1, n [, expr2]) : LPAD 는 파라미터인 expr1을 n자리만큼 문자열 길이를 늘려서 반환하는 함수. expr1 자릿수가 n보다 작을 경우에는 n - expr1의 길이만큼 expr2로 들어오는 문자열로 왼쪽을 채워 반환. expr2는 생략할 경우 공백이 채워짐

- LTRIM(char [, set])RTRIM(char [, set]) : LTRIM은 파라미터인 char에서 set으로 지정된 문자를 왼쪽에서 제거한 결과를 반환하는 함수이며, RTRIM은 마찬가지로 set으로 지정된 문자를 오른쪽에서 제거한 결과를 반환

- SUBSTR(char, position, length) : char 문자열에서 position으로 지정된 위치로부터 length 개의 문자를 떼어내어 그 결과를 반환(length 문자열 시작값은 1)

- SUBSTRB(char, position, length) : SUBSTR 함수와 그 기능은 동일하지만 length 로 명시된 숫자만큼의 문자 개수를 잘라내는 것이 아니라 문자열의 바이트 수를 잘라내어 그 결과를 반환

- REPLACE(char, search_string, replace_string) : char 문자열에서 search_string 값으로 들어온 문자를 replace_string 값으로 대체하여 이 결과를 반환

- TRANSLATE(expr, from_string, to_string) : REPLACE 함수와 비슷한 기능을 한다. 즉 expr 문자열에서 from_string 문자열이 있으면 이를 to_string 값으로 변환하여 그 결과를 반환하는 함수다. 하지만 차이점은 from_stirng 과 to_string 에 들어온 문자열이 일대일로 맵핑되어 변환된다

- TRIM([LEADING, TRAILING, BOTH] [, trim_character] [FROM] trim_source) : 문자열의 왼쪽이나 오른쪽 혹은 양쪽 모두에서 지정된 문자나 공백을 제거한 결과를 반환

 

 

* 숫자형 데이터를 반환하는 문자형 함수

- ASCII(char) : char 문자의 ASCII 코드값을 반환한다. 여기서 char는 일반적으로 문자가 하나이어야 하지만 문자열 형태로 들어올 수도 있는데 이러한 경우에도 결과는 맨 처음 문자의 코드값만을 반환한다

- INSTR(string, search_string, position, occurrence) : string 은 대상 문자열을 의미하고, search_string은 찾는 문자열을 의미한다. position은 문자열 찾는 시작 위치이고, occurrence는 몇 번째인지를 명시한다. 대상 문자열에서 특정 문자열을 찾아 그 시작 위치를 반환하는 함수이다

- LENGTH(char) : char 문자열의 길이를 반환

 

 

* 날짜형 함수

- SYSDATE : 시스템의 현재 날짜를 반환하는 날짜형 함수로 여기서 말하는 시스템은 오라클 DBMS가 설치된 컴퓨터나 운영체제를 말하는 것이다.

- ADD_MONTHS(date, integer) : date 기준의 날짜에 integer 만큼의 개월 수를 더한 뒤 그 결과를 반환

- MONTHS_BETWEEN(date1, date2) : 두 날짜 사이의 개월 수가 얼마인지를 구하는 함수

- NEXT_DAY(date, char) : date 이후의 날짜 중에서 주중에 char 로 명시된 첫 번째 일자를 반환(1~7 : 일~월)

- LAST_DAY(date) : date와 같은 달의 마지막 날짜를 반환

- ROUND(date, fmt) : date 날짜를 포맷모델인 fmt에 의해 명시된 단위로 반올림한 결과를 반환

- TRUNC(date, fmt) : date 날짜를 포맷모델에 맞게 날짜를 잘라낸다.

- EXTRACT([YEAR] [MONTH] [DAY] [HOUR] [MINUTE] [SECOND] ... FROM datetime) : 파라미터에 들어오는 날짜정보에서 특정한 날짜 유형, 즉 연도나 월, 시간, 분, 초 등을 추출하여 그 결과를 반환하는 함수

 

 

* NULL 관련 함수

- NVL(expr1, expr2) : 첫번째 파라미터인 expr1 값이 Null 이면 expr2를 반환하고, Null 아니면 expr1 값을 반환하는 함수

- NVL2(expr1, expr2, expr3) : expr1이 Null 이면 expr2를 Null이 아니면 expr3을 반환

- NULLIF(expr1, expr2) : expr1과 expr2 를 비교하여 이 둘이 같으면 Null을, 같지 않으면 expr1을 반환

- COALESCE(expr1, expr2, ...) : expr1, expr2, expr3 등 파라미터 리스트에서 첫 번째로 Null 이 아닌 파라미터를 반환하는 함수다. 만약 모든 리스트가 Null 일 경우에는 Null 을 반환한다.

- LNNVL(condition) : condition(조건)을 체크하여 조건결과 값이 FALSE나 UNKNOWN일 경우 TRUE 를, 결과가 TRUE 이면 FALSE를 반환하는 함수다. 함수의 파라미터로 데이터나 컬럼, 표현식이 아닌 조건이 온다는 점은 매우 흥미롭다. 이러한 이유로 해서 LNNVL 함수는 다른 함수들과는 달리 SELECT 리스트에는 사용할 수 없고 오직 WHERE 절에서만 사용 가능하다.

 

 

* 변환 함수

- TO_CHAR(datetime) : 함수의 파라미터로 DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE 등 날짜형 데이터 타입이 들어올 경우 이를 VARCHAR2 타입으로 변환하여 그 결과를 반환

- TO_CHAR(number) : 숫자형 데이터도 문자형으로 변환할 수 있으며 역시 VARCHAR2 타입으로 변환된다.

- TO_NUMBER(expr, fmt) : expr을 NUMBER 타입으로 변환하여 이를 반환하는 함수다. expr에는 문자형 데이터(CHAR, VARCHAR2, NCHAR, NVARCHAR2) 뿐만 아니라 BINARY_FLOAT, BINARY_DOUBLE 도 올 수 있다. fmt 는 생략이 가능하며, 이를 명시했을 경우 지정된 포맷으로 데이터를 반환한다.

- TO_BINARY_DOUBLETO_BINARY_FLOAT : 각각 BINARY_DOUBLE 과 BINARY_FLOAT 타입으로 변환한 결과를 반환하는 함수

- TO_DATE(char, fmt) : 파라미터로 들어온 CHAR, VARCHAR2, NCHAR, NVARCHAR2 타입의 데이터를 DATE 타입으로 변환한 결과를 반환하는 함수다. 이 함수 역시 날짜형 데이터를 반환하므로 일정한 포맷을 줄 수 있는데 이는 파라미터인 fmt 에서 명시한다.

- TO_TIMESTAMP(char, fmt) : TO_DATE 함수처럼 파라미터인 char 에 CHAR, VARCHAR2, NCHAR, NVARCHAR2이 올 수 있으며 이를 TIMESTAMP 타입으로 변환하여 그 결과를 반환하는 함수

- TO_TIMESTAMP_TZ(char, fmt) : CHAR, VARCHAR2, NCHAR, NVARCHAR2 타입을 TIMESTAMP WITH TIME ZONE 타입으로 변환하여 그 결과를 반환하는 함수

 

 

* DECODE 와 CASE

- DECODE(expr, search1, result1, search2, result2, ..., default_result) : expr 표현식을 검사하여 이 값이 search1 에 해당할 경우에는 result1 을, search2 에 해당할 경우에는 result2, search3는 result3를 반환하게 되며 명시된 모든 search 값에 해당하지 않을 경우 default_result 값을 반환한다. 마지막에 있는 default_result 값은 생략할 수 있고, 만약 이 값이 생략되어 있고 모든 search 값을 만족하지 않을 경우에는 Null 을 반환한다.

- CASE : 표현식(expression)의 일종이다. 표현식은 하나 혹은 그 이상의 값과 연산자, 함수가 조합된 것을 말하며 표현식은 함수보다 더 큰 개념이라 할 수 있다.

[기본형]

CASE 대상값 WHEN 비교값1 THEN 처리1

WHEN 비교값2 THEN 처리2

...

ELSE 디폴트 처리

END

[검색형]

CASE WHEN 비교조건1 THEN 처리1

WHEN 비교조건2 THEN 처리2

...

ELSE 디폴트 처리

END