미리 정의된 기능 모음이다. 단일 행 함수와 그룹 함수가 존재한다.
숫자를 반올림하여 출력할 때 사용한다. 자릿수에서 0은 소수점 첫째자리이다.
select round(반올림할 숫자, 자릿수)
숫자를 내림(절삭)하여 출력하는 함수이다.
select trunc(숫자, 자릿수)
숫자를 나누기하여 나머지를 출력하는 함수이다.
select mod(숫자,나눌값)
숫자를 제곱하여 출력하는 함수이다.
select power(숫자,승수)
제곱근을 출력하는 함수이다.
select sqrt(숫자)
문자열의 일부만 출력할 수 있다.
select substr(문자열, 시작 위치, 길이)
주의할 점은, SQL에서 시작 위치는 1이라는 것이다.
문자열을 왼쪽에서 얼만큼 자를지 설정한 후에 조회할 수 있다.
select left(문자열,길이)
LEFT의 반대로, 오른쪽에서 얼만큼 자르고 조회할 지 설정한다.
select right(문자열,길이)
여러 문자열을 하나로 연결할 수 있다.
select concat('paul', '-', 'lab')
CONCAT
이 아닌 연결연산자(||)로도 연결이 가능하다.
select 'first_name'||'last_name'
문자열을 소문자/대문자로 변경한다.
앞글자만 대문자로 만든다.
select initcap('abcde')
바꾸고 싶은 값으로 대상 값을 교체한다.
select replace('hello world'(변수명), 'world'(바꿔야하는 값), 'sql'(바꾼값))
문자열의 길이를 출력한다. 주로, 데이터를 검증할 때 사용한다.
select length('hello world')
해당 문자열의 위치를 구한다.
select instr('abcdef','b')
해당 컬럼에 NULL 값이 있는 경우 두번째 인자의 값으로 대체해서 채운다.
select IFNULL(name, '담당자 지정 안됨')
from `weniv.weniv_event`
아스키코드 번호로 리턴한다.
CAST
함수를 사용하여 데이터의 타입을 바꿀 수 있다.
# CAST(데이터 AS 타입명)
select CAST('123' AS INT64)
select CAST(true AS STRING)
DATE
를 사용하면 연/월/일 까지의 데이터만 조회되고, DATETIME
을 사용하면 연/월/일에 시간까지 표시된다.
# 날짜 타입
# 1) DATE
# 문자열 -> DATE
# 2) DATETIME
# 문자열 -> DATETIME
select DATE('2011-12-01 11:12:34') #연/월/일
select DATETIME('2011-12-01 11:12:34') #연/월/일 시간
FORMAT_DATE
를 사용하여 지정한 날짜 형식으로의 변환도 가능하다.
SELECT FORMAT_DATE('%y-%m-%d', created_at) AS KR_format;
FORMAT_DATETIME
으로 시간까지 컨트롤 가능하다.
SELECT FORMAT_DATETIME('%y/%m/%d %T', DATETIME '2023-1-25 15:30:00') AS KR_format;
EXTRACT
함수로 연도 혹은 월/일을 뽑아낼 수 있다.
SELECT EXTRACT(YEAR FROM DATE '2023-1-1');
DATE_DIFF
함수로 두 날짜간 차이를 계산 가능하다.
DATE_DIFF(date_expression_a, date_expression_b, date_part)
date_expression_a
- date_expression_b
두 날짜간 지정된 date_part
간격의 정수를 반환한다. date_part
는 YEAR, MONTH, DAY 등을 지정할 수 있다.
날짜 관련 함수도 꽤 많은데 이러한 함수들을 필요할 때 찾아보도록 하자.