콘텐츠로 이동

함수

함수설명
lower(text)소문자로 변환
upper(text)대문자로 변환
initcap(text)각 단어의 첫 글자 대문자
length(text) / char_length(text)문자열 길이
trim(text) / ltrim(text) / rtrim(text)공백 제거
btrim(text [, chars])양쪽에서 문자 제거
substring(text, start [, len])부분 문자열 추출
left(text, n) / right(text, n)처음/마지막 n자
lpad(text, len [, pad]) / rpad(text, len [, pad])문자열 패딩
replace(text, from, to)발생 치환
translate(text, from, to)문자별 치환
concat(a, b) / concat_ws(sep, ...)연결 (구분자 포함)
repeat(text, n)문자열 반복
reverse(text)문자열 뒤집기
position(substr, text)부분 문자열 위치 찾기 (1부터 시작)
split_part(text, delim, n)분리 후 n번째 부분 가져오기
ascii(text) / chr(int)문자/코드 포인트 변환
regexp_replace(text, pat, repl [, flags])정규식 치환 (전역은 'g')
regexp_match(text, pattern)첫 번째 정규식 매치를 배열로
regexp_split_to_array(text, pattern)정규식으로 분리하여 배열로
starts_with(text, prefix)텍스트가 접두사로 시작하면 true
ends_with(text, suffix)텍스트가 접미사로 끝나면 true
format(formatstr, ...)문자열 포맷 (아래 참고)
quote_ident(value)SQL 식별자로 인용
quote_literal(value)SQL 리터럴로 인용

다음 포맷 지정자를 지원합니다:

지정자설명
%s문자열 치환
%ISQL 식별자 (인용 및 이스케이프)
%LSQL 리터럴 (인용 및 이스케이프)
%%리터럴 퍼센트 기호
SELECT format('Hello, %s!', 'world');
-- Hello, world!
SELECT format('SELECT %I FROM %I WHERE id = %L', 'name', 'users', '42');
-- SELECT "name" FROM "users" WHERE id = '42'
함수설명
abs(x)절대값
ceil(x) / floor(x)올림/내림
round(x [, digits]) / trunc(x [, digits])반올림/절삭
sign(x)부호 (-1, 0, 1)
mod(x, y)나머지
power(x, y) / sqrt(x)거듭제곱/제곱근
cbrt(x)세제곱근
exp(x) / ln(x) / log10(x) / log(base, x)지수/로그
div(x, y)정수 나눗셈
factorial(n)팩토리얼
gcd(a, b) / lcm(a, b)최대공약수 / 최소공배수
pi()원주율 상수
degrees(rad) / radians(deg)각도 변환
sin / cos / tan / asin / acos / atan / atan2삼각함수
sinh / cosh / tanh / asinh / acosh / atanh쌍곡 삼각함수
random()임의 숫자 [0, 1)
setseed(seed)난수 생성기 시드 설정
width_bucket(value, low, high, count)값을 버킷에 할당 (아래 참고)
greatest(a, b, ...) / least(a, b, ...)값들의 최대/최소
연산자설명
x % y나머지
x & y비트 AND
x | y비트 OR
x # y비트 XOR
~x비트 NOT
x << n왼쪽 비트 시프트
x >> n오른쪽 비트 시프트

[low, high) 범위의 count개 등간격 버킷 중 하나에 값을 할당합니다:

SELECT width_bucket(35, 0, 100, 10);
-- 4 (30-39 값의 버킷)

low 미만의 값에는 0을, high 이상의 값에는 count + 1을 반환합니다.

함수설명
now()현재 타임스탬프 (UTC)
clock_timestamp()현재 타임스탬프 (UTC)
current_date()현재 날짜 (UTC)
current_time()현재 시간 (UTC)
date_part(field, source)날짜/시간에서 필드 추출
EXTRACT(field FROM source)SQL 표준 추출
date_trunc(field, source)정밀도로 절삭 (year/quarter/month/week/day/hour/minute/second)
make_date(y, m, d) / make_time(h, m, s)날짜/시간 생성
make_timestamp(y, mo, d, h, mi, s)타임스탬프 생성
make_interval(days [, hours [, mins [, secs]]])인터벌 생성
age(ts1, ts2) / age(ts)타임스탬프 간 인터벌
to_char(value, format)텍스트로 포맷
to_date(text, format) / to_timestamp(text, format)포맷으로 파싱
to_number(text, format)숫자 문자열 파싱
isfinite(date|timestamp)항상 true (Java time에 무한대 없음)
함수설명
array_length(arr)요소 수
array_append(arr, val) / array_prepend(val, arr)요소 추가
array_concat(arr1, arr2) / array_cat(arr1, arr2)배열 연결
array_slice(arr, start [, end])배열 슬라이스
array_remove(arr, val)모든 발생 제거
array_position(arr, val)요소 위치 찾기 (1부터 시작)
array_distinct(arr)중복 제거
array_replace(arr, old, new)일치하는 요소 치환
array_lower(arr, dim) / array_upper(arr, dim)배열 경계 (1부터 시작)
array_ndims(arr)차원 수 (항상 1)
cardinality(arr)요소 수
string_to_array(text, delim)문자열을 배열로 분리
array_to_string(arr, sep)배열을 문자열로 결합
함수설명
octet_length(bytea)바이트 수
get_byte(bytea, offset)0부터 시작하는 오프셋의 바이트 가져오기 (0-255 반환)
set_byte(bytea, offset, value)오프셋의 바이트 설정, 새 bytea 반환
encode(bytea, format) / decode(text, format)바이너리 인코딩 (hex, base64)
함수설명
nextval('name')시퀀스를 진행하고 다음 값 반환
currval('name')현재 값 (세션에서 이전에 nextval 필요)
setval('name', value [, is_called])시퀀스 값 설정 (is_called 기본값 true)
lastval()이 세션에서 어떤 시퀀스든 마지막 값 반환
CREATE SEQUENCE order_seq START WITH 100;
SELECT nextval('order_seq'); -- 100
SELECT nextval('order_seq'); -- 101
SELECT currval('order_seq'); -- 101
SELECT setval('order_seq', 200);
SELECT nextval('order_seq'); -- 201
SELECT lastval(); -- 201
함수설명
coalesce(a, b, ...)첫 번째 non-null 값
nullif(a, b)a = b이면 NULL
typeof(value)타입 이름을 텍스트로
gen_random_uuid()UUID v4 생성
함수설명
COUNT(*) / COUNT(expr)행 수
SUM(expr)값의 합
AVG(expr)평균
MIN(expr) / MAX(expr)최소/최대
string_agg(text, separator)구분자로 연결
array_agg(expr)값을 배열로 수집
bool_and(expr) / bool_or(expr) / every(expr)행 간 논리 AND/OR
bit_and(expr)행 간 비트 AND
bit_or(expr)행 간 비트 OR
bit_xor(expr)행 간 비트 XOR
variance(expr) / var_samp(expr)표본 분산
var_pop(expr)모집단 분산
stddev(expr) / stddev_samp(expr)표본 표준편차
stddev_pop(expr)모집단 표준편차

모든 집계 함수는 포함되는 행을 제한하기 위해 FILTER (WHERE ...) 절을 지원합니다:

SELECT
COUNT(*) AS total,
COUNT(*) FILTER (WHERE active) AS active_count
FROM users;

참고: JSON 집계 함수

윈도우 함수는 행을 축소하지 않고 관련 행 그룹을 기반으로 각 행의 값을 계산합니다.

함수설명
ROW_NUMBER()파티션 내 순차 행 번호
RANK()동순위에 갭이 있는 순위
DENSE_RANK()동순위에 갭이 없는 순위
함수설명
LAG(expr [, offset [, default]])앞 행의 값 (기본 오프셋: 1)
LEAD(expr [, offset [, default]])뒤 행의 값 (기본 오프셋: 1)
NTILE(n)행을 대략 균등한 n개 그룹으로 나눔
함수설명
FIRST_VALUE(expr)윈도우 프레임의 첫 번째 행에서의 expr
LAST_VALUE(expr)윈도우 프레임의 마지막 행에서의 expr
NTH_VALUE(expr, n)프레임의 n번째 행에서의 expr 값 (1부터 시작), 해당 행이 없으면 NULL

모든 집계 함수를 OVER()와 함께 윈도우 함수로 사용할 수 있습니다. 구문과 프레임 사양은 쿼리 — 윈도우 함수를 참고하세요.