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 문자열 리터럴을 만들거나, 출력 형식을 맞출 때 자주 사용돼요.