SQL 함수

크리스탈 파워~UP·2021년 3월 10일
0

이론정리

목록 보기
3/3

DAUL 테이블

SYS계정에서 제공하는 테이블. 함수나 계산식을 테이블 참조없이 실행해보기 위해 FROM절에 사용하는 더미 테이블

SELECT 20*30 FROM DUAL;

단일행 함수

1. 숫자 함수

1) ABS : 절대값

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

2) ROUND : 반올림

반올림할 위치를 지정가능
자릿수를 지정하지 않으면 소수점 첫째 자리에서 반올림
음수로 자릿수를 지정할 경우 일->십->백 순의 자릿수에서 반올림

SELECT 12.345, ROUND(12.345), ROUND(12.345,2), ROUND(12.345,-1)
FROM dual;

3) TRUNC : 버림

버림을 할 자릿수 지정
자릿수를 지정하지 않으면 소수점 첫째 자리에서 버림(기본값이 0)
음수일 경우 일->십->백 순의 자릿수에서 버림

SELECT 12.345, TRUNC(12.345), TRUNC(12.345,2), TRUNC(12.456,-1), TRUNC(12.456,0)
FROM dual;

4) MOD : 나누기 후 나머지 출력

SELECT MOD(21,5) FROM dual;

5) CEIL : (실수 기준으로) 올림

CEIL(실수) : 실수 기준으로 가장 근접한 큰 값의 정수 반환

SELECT CEIL(12.345) FROM dual;

6) FLOOR : (실수 기준으로) 버림

FLOOR(실수) : 실수 기준으로 가장 근접한 작은 정수의 값 반환

SELECT FLOOR(12.345) FROM dual;

7) POWER : 제곱

POWER(정수A, 정수B) : 정수A를 정수B만큼 제곱하는 함수

SELECT POWER(2,3) FROM dual;

2. 문자 함수

1) UPPER(값 또는 컬럼명) : 대문자로 변환

SELECT UPPER('apple') FROM dual;

2) LOWER(값 또는 컬럼명) : 소문자로 변환

SELECT LOWER('APPLE') FROM dual;

3) INITCAP(값 또는 컬럼명) : 단어의 앞 글자만 대문자로 변환

띄어쓰기 후 첫글자만 대문자!

SELECT INITCAP('RED APPLE') FROM dual;

4) LENGTH / LENGTHB

  • LENGTH(문자열 또는 문자형컬럼) : 문자 길이 반환
  • LENGTHB(문자열 또는 문자형컬럼) : 바이트 수 반환
    • 영어, 숫자, 띄어쓰기 : 1Byte
    • 한글 : 3Byte
	SELECT LENGTH('apple77'),LENGTHB('apple77') FROM dual;

	SELECT LENGTH('오라클'),LENGTHB('오라클') FROM dual;

5) INSTR / INSTRB

  • INSTR
    INSTR(대상문자열(컬럼||문자열), 찾을 문자[,POSITION(시작위치)][,OCCURENCE(횟수)]
    • 문자 또는 컬럼에 표함된 문자의 위치를 찾는 함수
    • 시작 인덱스, 횟수는 생략가능 (생략시, 1로 값이 자동으로 들어감)
    • 오라클에서 문자열 시작 인덱스는 1부터!
    • 포지션에 음수가능. 뒤에서 부터 찾음
    SELECT INSTR('HELLO ORACLE!', 'O'),
    INSTR('HELLO ORACLE!', 'O', 6, 1), 
    INSTR('HELLO HELLO!', 'H', -7) 
    FROM dual;

  • INSTRB :
    바이트로 글자를 반환.
	SELECT INSTRB('HELLO 오라클!', '라') FROM dual;

6) SUBSTR / SUBSTRB: 문자열 특정

  • SUBSTR:
    SUBSTR(대상문자||컬럼,시작위치[,길이])
    대상 시작위치부터 선택 개수만큼 추출.
    길이 생략가능. 길이가 없을 경우 해당 위치부터 끝까지~
  • SUBSTRB : 대상의 시작위치부터 선택 바이트만큼 추출
	SELECT SUBSTR('abc@naver.com',5,5) FROM dual;

	SELECT SUBSTR('abc@naver.com',INSTR('abc@naver.com','@')+1) FROM dual;

중복 값 없이 이메일출력하기

  SELECT DISTINCT SUBSTR(student_email,INSTR(student_email,'@')+1) AS "email"
  FROM student
  ORDER BY email;

7) LPAD / RPAD

문자열의 특정길이만큼 확보하고, 길이가 다 채워지지 않는 공간(공백)에 왼쪽이나/오른쪽에 지정한 문자를 넣는 함수
LPAD(문자||컬럼,길이[,지정문자])

  • LPAD
  • RPAD
SELECT LPAD('hello 오라클',20), RPAD('hello 오라클',20,'!') FROM dual;

8) LTRIM / RTRIM :

양 끝에 특정문자를 제거하는 함수 문자를 지정하지 않으면 공백제거
LTRIM(문자열 [,지정문자])

  • LTRIM
  • RTRIM
	SELECT LTRIM('     오   라클  123') FROM dual;

	SELECT LTRIM('124 5 오라클 5  982','0123456789') FROM DUAL;
    	--지정문자를 그룹으로 보는게 아니라 하나씩 보면서 지우기

	SELECT RTRIM('124 5 오라클 5  982','0123456789') FROM DUAL;

9) TRIM : 특정문자 잘라내기

TRIM([LEADING||TRAILING||BOTH] [문자한개][FROM] 대상문자열) -

  • 문자한개만 가능!!!!!
  • LEADING 왼쪽, TRAILING 끝, BOTH 양쪽다
SELECT TRIM(LEADING 'X' FROM 'XXXXXORACLEXXXX') FROM dual; 

SELECT TRIM(TRAILING 'X' FROM 'XXXXXORACLEXXXX') FROM dual;

SELECT TRIM(BOTH 'X' FROM 'XXXXXORACLEXXXX') FROM dual;

SELECT TRIM(BOTH 'XX' FROM 'XXXXXORACLEXXXX') FROM dual;

profile
코딩러너! 걷지말고 뛰어라~

0개의 댓글