SQL 함수란?
미리 정의된 기능 모음, 단일 행 함수와 그룹 함수가 있다.
데이터 타입 함수
- 문자 : CHAR(값) : 문자 타입 지정 2000바이트
- 문자 : VARCHAR2(값) : 문자 타입 지정 4000바이트
- 숫자 : Oracle에서는 NUMBER(정수 자릿수, 소수 자릿수), MySQL은 INT사용
- 날짜 : DATE()
- 시간 : TIME()
문자열 처리
- CONCAT('abc', 'def') → 'abcdef' : 문자열을 연결
- LOWER('ABC') → 'abc'
- UPPER('abc') → 'ABC'
- INITCAP('abc') → 'Abc' : 앞문자만 대문자
- SUBSTR('hello world', 1, 5) → 'hello' : 문자열을 자를 때 많이 사용한다. 숫자는 시작위치, 자를 문자열의 길이를 나타낸다.
- REPLACE('hello world', 'world', 'SQL') → 'hello SQL' : 바꾸고 싶은 값으로 대상 값을 교체
- LENGTH('hello') → 5 : 문자열의 길이를 출력
- COUNT : 행의 개수를 출력
- INSTR('ABCDEF', 'B') → 2 : 문자열의 위치를 구한다. 여기서 INDEX는 1부터 시작
- ROUND(반올림할 숫자, 자릿수) : 숫자를 반올림, 0이 소숫점 첫째자리
- TRUNC(절삭할 숫자, 자릿수) : 숫자를 절삭, 0이 소숫점 첫째자리
- MOD(수, 나누는 값) : 나머지
- POWER(수, 승수) : 제곱 출력
- SQRT : 제곱근 출력
SUBSTR(컬럼, START, LENTH) : 슬라이싱
SELECT SUBSTR('hello world', 1, 5);
날짜
SELECT DATE();
SELECT DATE() + 10;
SELECT TIME() + 10;
통계
SELECT MAX(CustomerID) AS 최댓값 FROM Customers;
SELECT SUM(CustomerID) AS 전체합 FROM Customers;
SELECT MIN(CustomerID) AS 최솟값 FROM Customers;
SELECT COUNT(CustomerID) AS 전체행의수 FROM Customers;
SELECT AVG(CustomerID) AS 평균 FROM Customers;
문자열 변환
해당함수는 간혹 SQL Injection 공격에 사용된다.
SELECT CHAR(65) || CHAR(65));
SELECT CONCAT(CHAR(65), CHAR(65));
SELECT ASCII('A');