SQLite의 printf() 함수

SQLite의 printf() 함수

이 문서는 SQLite에 내장된 printf() 함수와, SQL 문장에서 사용할 수 있는 형식 지정자(format specifier)들을 설명해요.

출처: 문서

본문

SQLite는 C의 printf()와 유사한 내장 함수를 제공하며, 다음 문법으로 사용해요.

printf(FORMAT, ...)

FORMAT 문자열 안의 %로 시작하는 형식 지정자를 그 뒤의 인자 값으로 치환해요. 예를 들어:

SELECT printf('%d + %d = %d', 1, 2, 1+2);
-- 결과: 1 + 2 = 3

형식 지정자

printf()는 다음과 같은 형식 지정자를 지원해요.

  • %c — 단일 문자(char)
  • %d — 부호 있는 10진 정수(decimal integer)
  • %i%d와 동일
  • %o — 8진수(octal)
  • %u — 부호 없는 10진 정수
  • %x, %X — 16진수(hexadecimal, 소문자/대문자)
  • %f — 부동소수점 고정 소수점 표기
  • %e, %E — 지수 표기(exponential)
  • %g, %G — 값에 따라 %f 또는 %e를 자동 선택
  • %s — 문자열
  • %z — NUL로 끝나는 문자열 (C API에서)
  • %q — SQL 문자열로 인용(single-quote) 처리된 문자열. 내부의 작은따옴표(')는 ''로 이중화해서 SQL 인젝션을 방지해요.
  • %Q%q와 유사하되, NULL이면 NULL이라는 글자로 출력해요.
  • %w — SQL 문자열로 인용된 값 (double-quote 사용)

폭(width)과 정밀도(precision)

%와 형식 문자 사이에 숫자를 넣어 최소 폭을 지정할 수 있어요.

SELECT printf('%5d', 42);
-- 결과: '   42'  (왼쪽에 공백 3개)

SELECT printf('%-5d', 42);
-- 결과: '42   '  (왼쪽 정렬)

%.*s처럼 *를 쓰면 폭이나 정밀도를 인자로 받을 수 있어요.

SELECT printf('%.3f', 3.14159);
-- 결과: 3.142

플래그

  • %#o, %#x — 접두어(0, 0x)를 붙여요.
  • %+d — 양수에 + 부호를 붙여요.
  • % d — 양수 앞에 공백을 넣어요.
  • %0d — 채움 문자로 공백 대신 0을 사용해요.

예제

-- 이름과 나이를 함께 출력
SELECT printf('%s는 %d살이에요', name, age) FROM person;

-- 테이블 여섯 글자를 채워 출력
SELECT printf('%-10s|%5d', name, score) FROM scores;

printf()는 SQL 문자열 리터럴을 만들거나, 출력 형식을 맞출 때 자주 사용돼요.

더 알아보기 (Learn more)