문자열이 숫자형식을 값을 가졌을 때, 정렬을 수행하면 자릿수에 대한 정렬을 한다.
자주 사용될 기능을 미리 구현하여 제공하는 것.
오라클 자체에서 제공하는 함수(built-in function)와 사용자가 정의(user define function)하는 함수가 존재.
insert, where절 사용, having절에서 사용.
수치
abs, round, ceil, floor, trunc
문자열함수
upper, lower, initcap, length, instr, substr, trim, ltrim, rtrim, lpad, rpad, replac,,,
변환함수
to_char, to_date, to_number
조건함수
decode
집계함수
count, sum, avg, max, min
랭크함수
rank over, row_number over
날짜
months_between, add_months
null변환
nvl, nvl2
모든 계정이 사용할 수 있는 가상테이블.
같은 이름으로 테이블이 생성되면 사라지고, 테이블을 삭제하면 다시 사용할 수 있다.
함수를 테스트할 때 사용하면 편리.
select에 정의하는 값으로 컬럼을 만들고, 한행 조회를 수행한다.
abs(값)
- 양의 정수를 사용. 실수부의 자릿수가 설정되고, 반올림해서 볼 자릿수를 설정
- 음의 정수를 사용. 정수부의 자릿수가 설정되고, 해당 자리에서 반올림하여 보여진다.
올림 : ceil //냅다 다 올림.
ceil(값)
내림 : floor //냅다 다 내림.
floor(값)
trunc(값, 자릿수)
- 양의 정수를 사용. 실수부의 자릿수가 설정되고, 설정된 다음 자리 절사.
- 음의 정수를 사용. 정수부의 자릿수가 설정되고, 해당 자리 절사.
null은 숫자도 문자열도 아닌 사용할 수 없는 값
null은 연산되면 연산의 결과가 null로 나온다.
-nvl과 nvl2함수로 null인 컬럼 값을 다른 값으로 변경할 수 있다.
nvl : 컬럼값이 null인 경우 제공할 값을 설정할 때.
nvl2 : 컬럼값이 null인 경우와 null이 아닌 경우에 제공할 값을 설정할 때
nvl(컬럼명, null일 때 제공할 값) // 컬럼의 데이터형과 일치하는 값만 사용할 수 있다.
nvl(컬럼명, null이 아닐때 제공할 값, null일 때 제공할 값)
-문자열의 길이 :
length(값)
-대문자 :
upper( 값 )
-소문자 :
lower(값)
-첫 글자만 대문자로 변경 ( 띄어쓰기 이후 글자에도 적용된다. ) :
initcap(값)
- instr(값, 찾을 문자열, 시작인덱스)
instr('ABCDE', 'D') => 4
(인덱스가 1부터 시작 A: 1, B: 2, C: 3, D: 4. 찾는 인덱스가 없으면 0)
substr(값, 시작인덱스, 자를 글자수)
substr('abcdef', 2, 3) => 'bcd'
trim(값) trim(' a bc ') => 'a bc'
-문자열의 앞 공백을 제거 : ltrim
trim(값) ltrim(' a bc ') => 'a bc '
-문자열의 뒤 공백을 제거 : rtrim
trim(값) rtrim(' a bc ') => ' a bc'
-의미없는 문자열 자르기 : trim
trim('o' from 'oooooooOracleoooooo') => Oracle
-문자열 앞에 특정 문자 채우기
lpad(값, 총글자수, 치울문자열)
lpad('abcde', 10, '#') => #####abcde
-문자열 뒤에 특정문자 채우기 //한글은 한글자에 2byte로 연산
rpad(값, 총글자수, 채울문자열)
rpad('abcde', 10, '%') => abcde%%%%%
PL/SQL에서는 사용할 수 없다
조건을 부여하여 조건에 맞으면 짧은 코드를 실행해야 할 때.
decode(컬럼명, 비교값, 실행코드, 비교값, 실행코드,,,,비교값이 없을 때 실행코드)
select 조회컬럼에서 사용.
조회된 결과로 비교하여 다른 코드를 실행 할 때 사용.
조회 결과로 비교할 때 실행될 코드가 긴 경우 사용.
select case 컬럼명 when 비교값 then 실행코드
when 비교값 then 실행코드
when 비교값 then 실행코드
//비교값에 연산식이 들어가면 컬럼명 없이 'case when 비교값(연산식) then 실행코드' 로 작성
else 비교값이 없을 때 실행코드
end alias
to_char
숫자 -> 문자열로 변환 (2024 -> 2,024)
to_char(값, 'pattern');
- 0패턴 => 데이터가 존재하지 않으면 0을 채워서 보여줌.
(to_char(2024, '0,000,000') => 0,002,024)- 9패턴 => 데이터가 존재하는 것만 보여준다.
(to_char(2024, '9,999,999') => 2,024)
// 패턴에 패턴문자나 특수문자가 아닌 문자열을 사용하면 error발생 => '문자열'
// 패턴이 길면 error 발생
- 년 - y
월 - mm
일 - dd
요일
-d 숫자로 된 요일 1-일요일, 2-월요일, 3-화요일
-dy '월', '화'
-day '월요일'- 오전 / 오후 - am
시간 : hh, hh24
분 : mi
초 : ss
분기 : q
to_date
날짜 -> 문자열로 변환
to_date(날짜, '패턴')