정렬

문자열이 숫자형식을 값을 가졌을 때, 정렬을 수행하면 자릿수에 대한 정렬을 한다.

function

자주 사용될 기능을 미리 구현하여 제공하는 것.
오라클 자체에서 제공하는 함수(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


dual 테이블

모든 계정이 사용할 수 있는 가상테이블.
같은 이름으로 테이블이 생성되면 사라지고, 테이블을 삭제하면 다시 사용할 수 있다.
함수를 테스트할 때 사용하면 편리.
select에 정의하는 값으로 컬럼을 만들고, 한행 조회를 수행한다.


수치함수

절대값 : abs

abs(값)

반올림 : round(값), round(값, 자릿수)

  • 양의 정수를 사용. 실수부의 자릿수가 설정되고, 반올림해서 볼 자릿수를 설정
  • 음의 정수를 사용. 정수부의 자릿수가 설정되고, 해당 자리에서 반올림하여 보여진다.
  • 올림 : ceil //냅다 다 올림.

    ceil(값)

  • 내림 : floor //냅다 다 내림.

    floor(값)

절삭 : trunc

trunc(값, 자릿수)

  • 양의 정수를 사용. 실수부의 자릿수가 설정되고, 설정된 다음 자리 절사.
  • 음의 정수를 사용. 정수부의 자릿수가 설정되고, 해당 자리 절사.

null변환 함수

null은 숫자도 문자열도 아닌 사용할 수 없는 값
null은 연산되면 연산의 결과가 null로 나온다.

-nvl과 nvl2함수로 null인 컬럼 값을 다른 값으로 변경할 수 있다.
nvl : 컬럼값이 null인 경우 제공할 값을 설정할 때.
nvl2 : 컬럼값이 null인 경우와 null이 아닌 경우에 제공할 값을 설정할 때

nvl(컬럼명, null일 때 제공할 값) // 컬럼의 데이터형과 일치하는 값만 사용할 수 있다.

nvl(컬럼명, null이 아닐때 제공할 값, null일 때 제공할 값)
  • 컬럼에 null이 입력되는 상황
    number, date는 insert할 때 컬럼명이 생략되면 null이 입력된다.
    varchar2, char는 insert할 때 컬럼명이 생략되거나 ‘’가 입력되면 null이 입력된다.

문자열함수

-문자열의 길이 :

length(값)

-대문자 :

upper( 값 )

-소문자 :

lower(값)

-첫 글자만 대문자로 변경 ( 띄어쓰기 이후 글자에도 적용된다. ) :

initcap(값)


특정문자의 인덱스 얻기 instr

  • instr(값, 찾을 문자열, 시작인덱스)
    instr('ABCDE', 'D') => 4
    (인덱스가 1부터 시작 A: 1, B: 2, C: 3, D: 4. 찾는 인덱스가 없으면 0)

자식문자열 얻기 substr

substr(값, 시작인덱스, 자를 글자수)
substr('abcdef', 2, 3) => 'bcd'


문자열의 앞, 뒤 공백을 제거 : trim

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%%%%%

문자열 합치기

  • concat(값, 합칠 문자열)

조건 함수

decode

PL/SQL에서는 사용할 수 없다
조건을 부여하여 조건에 맞으면 짧은 코드를 실행해야 할 때.

decode(컬럼명, 비교값, 실행코드, 비교값, 실행코드,,,,비교값이 없을 때 실행코드)

case문

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(날짜, '패턴')

0개의 댓글