스칼라 함수
스칼라 함수 (Scalar Functions)
Turso가 문자열 조작, 수학, 타입 검사 등을 위해 기본 제공하는 스칼라 함수 모음이에요. 스칼라 함수는 인수를 하나 이상 받아서 단일 값을 돌려줘요.
출처: 문서
본문
스칼라 함수는 표현식이 유효한 곳이면 어디서든 쓸 수 있어요: SELECT 컬럼, WHERE 조건, ORDER BY, GROUP BY, HAVING, CHECK 제약, DEFAULT 값.
함수 레퍼런스
수학 함수
| 함수 | 설명 |
|---|---|
abs(X) |
X의 절댓값. X가 INTEGER면 INTEGER, REAL이면 REAL, NULL이면 NULL을 반환해요 |
max(X, Y, ...) |
값이 가장 큰 인수를 반환해요 |
min(X, Y, ...) |
값이 가장 작은 인수를 반환해요 |
random() |
무작위 64비트 부호 있는 정수를 반환해요 |
round(X) |
X를 가장 가까운 정수로 반올림해요 |
round(X, Y) |
X를 소수점 Y자리까지 반올림해요 |
sign(X) |
X가 음수, 0, 양수일 때 각각 -1, 0, 1을 반환해요 |
문자열 함수
| 함수 | 설명 |
|---|---|
char(X1, X2, ..., XN) |
유니코드 코드 포인트 X1부터 XN에 해당하는 문자들로 이루어진 문자열을 반환해요 |
chr(X) |
char(X)의 별칭. PostgreSQL/SQL 표준 철자예요 |
concat(X, ...) |
모든 인수를 문자열로 이어 붙여요. NULL 인수는 건너뛰어요 |
concat_ws(SEP, X, ...) |
구분자 SEP를 사이에 넣어 인수를 이어 붙여요. NULL 인수는 건너뛰어요 |
format(FORMAT, ...) |
printf 스타일 형식 지정자로 포맷된 문자열을 반환해요 |
hex(X) |
X의 대문자 16진수 표현을 반환해요 |
instr(X, Y) |
X에서 Y가 처음 나오는 위치(1부터 시작)를 반환하고, 없으면 0을 반환해요 |
strpos(X, Y) |
instr(X, Y)의 별칭. PostgreSQL 철자, 인수 순서 동일 |
length(X) |
문자열이면 문자 수, blob이면 바이트 수를 반환해요 |
char_length(X) |
length(X)의 별칭. SQL 표준 짧은 형태 |
character_length(X) |
length(X)의 별칭. SQL 표준 긴 형태 |
lower(X) |
문자열 X의 소문자 사본을 반환해요 |
lpad(X, N) / lpad(X, N, F) |
F로(기본값은 공백 하나) 왼쪽을 채워 길이 N으로 만들어요 |
ltrim(X) |
X의 앞쪽 공백을 제거해요 |
ltrim(X, Y) |
X의 앞쪽에서 Y에 있는 문자들을 제거해요 |
octet_length(X) |
X의 길이를 바이트 단위로 반환해요 |
printf(FORMAT, ...) |
format()의 별칭. 포맷된 문자열을 반환해요 |
quote(X) |
X의 SQL 리터럴 표현을 반환해요 |
repeat(X, N) |
X를 N번 이어 붙인 문자열을 반환해요. N <= 0이면 빈 문자열 |
replace(X, Y, Z) |
X에서 Y가 나올 때마다 Z로 바꾼 결과를 반환해요 |
reverse(X) |
문자열 X의 문자들을 거꾸로 배열해요. string_reverse(X)의 별칭 |
rpad(X, N) / rpad(X, N, F) |
F로(기본값은 공백 하나) 오른쪽을 채워 길이 N으로 만들어요 |
rtrim(X) |
X의 뒤쪽 공백을 제거해요 |
rtrim(X, Y) |
X의 뒤쪽에서 Y에 있는 문자들을 제거해요 |
soundex(X) |
문자열 X의 Soundex 인코딩을 반환해요 |
string_reverse(X) |
문자열 X의 문자들을 거꾸로 배열해요 |
substr(X, Y) |
X의 Y번째(1부터 시작) 위치부터 시작하는 부분 문자열을 반환해요 |
substr(X, Y, Z) |
X의 Y번째 위치부터 Z개 문자를 반환해요 |
substring(X, Y) |
substr(X, Y)의 별칭 |
substring(X, Y, Z) |
substr(X, Y, Z)의 별칭 |
trim(X) |
X의 앞뒤 공백을 제거해요 |
trim(X, Y) |
X의 앞뒤에서 Y에 있는 문자들을 제거해요 |
btrim(X) / btrim(X, Y) |
trim(X) / trim(X, Y)의 별칭. PostgreSQL/Oracle 철자 |
unhex(X) |
16진수 문자열 X를 blob으로 변환해요. X에 16진수가 아닌 문자가 있으면 NULL을 반환해요 |
unhex(X, Y) |
unhex(X)와 같지만, Y에 있는 문자는 X에서 조용히 무시해요 |
unicode(X) |
문자열 X의 첫 문자의 유니코드 코드 포인트를 반환해요 |
unistr(X) |
X 안의 PostgreSQL 스타일 유니코드 이스케이프(\XXXX, \+XXXXXX, \uXXXX, \UXXXXXXXX, \\)를 평가해요 |
unistr_quote(X) |
X를 인용된 문자열 리터럴로 반환하고, 비ASCII 문자는 unistr 이스케이프로 적어요 |
upper(X) |
문자열 X의 대문자 사본을 반환해요 |
zeroblob(N) |
0 바이트 N개로 이루어진 blob을 반환해요 |
조건 함수
| 함수 | 설명 |
|---|---|
coalesce(X, Y, ...) |
NULL이 아닌 첫 번째 인수를 반환해요. 모두 NULL이면 NULL을 반환해요 |
ifnull(X, Y) |
X가 NULL이 아니면 X, 아니면 Y를 반환해요. coalesce(X, Y)와 동일 |
iif(X, Y, Z) |
X가 참(0이 아님)이면 Y, 아니면 Z를 반환해요 |
if(X, Y, Z) |
iif(X, Y, Z)의 별칭 |
nullif(X, Y) |
X와 Y가 같으면 NULL, 아니면 X를 반환해요 |
타입 함수
| 함수 | 설명 |
|---|---|
typeof(X) |
X의 타입을 문자열로 반환해요: "null", "integer", "real", "text", "blob" |
패턴 매칭 함수
| 함수 | 설명 |
|---|---|
glob(X, Y) |
문자열 Y가 glob 패턴 X와 일치하면 1, 아니면 0을 반환해요. 대소문자 구별 |
like(X, Y) |
문자열 Y가 LIKE 패턴 X와 일치하면 1, 아니면 0을 반환해요. ASCII는 대소문자 무시 |
like(X, Y, Z) |
like(X, Y)와 같지만 Z를 이스케이프 문자로 써요 |
옵티마이저 힌트
| 함수 | 설명 |
|---|---|
likelihood(X, Y) |
X를 그대로 반환해요. X가 확률 Y(0.0~1.0)로 참이라고 쿼리 플래너에 힌트를 줘요 |
likely(X) |
X를 그대로 반환해요. likelihood(X, 0.9375)와 동일 |
unlikely(X) |
X를 그대로 반환해요. likelihood(X, 0.0625)와 동일 |
Blob 함수
| 함수 | 설명 |
|---|---|
hex(X) |
blob 또는 정수 X의 대문자 16진수 표현을 반환해요 |
randomblob(N) |
의사 난수 데이터로 채운 N바이트 blob을 반환해요 |
unhex(X) |
16진수 문자열 X를 blob으로 변환해요 |
zeroblob(N) |
0 바이트 N개짜리 blob을 반환해요 |
시스템 함수
| 함수 | 설명 |
|---|---|
last_insert_rowid() |
같은 데이터베이스 연결에서 가장 최근 성공한 INSERT의 rowid를 반환해요 |
changes() |
가장 최근의 INSERT, UPDATE, DELETE가 수정한 행 수를 반환해요 |
total_changes() |
데이터베이스 연결이 열린 이후 수정된 총 행 수를 반환해요 |
sqlite_version() |
버전 문자열 "3.42.0"을 반환해요 |
sqlite_source_id() |
SQLite 호환 엔진의 소스 식별자 문자열을 반환해요 |
turso_version() |
Turso 엔진 버전 문자열을 반환해요 (예: "0.7.0") |
load_extension(X) |
경로 X의 공유 라이브러리에서 Turso 네이티브 확장을 로드해요 |
상세 설명과 예제
abs(X)
X의 절댓값을 반환해요. 반환 타입은 입력을 따라가요: 정수 입력엔 INTEGER, 부동소수점 입력엔 REAL. X가 NULL이면 NULL을 반환해요. 정수처럼 보이는 텍스트 값에는 INTEGER를 반환해요.
SELECT abs(-42); -- 42
SELECT abs(3.14); -- 3.14
SELECT abs(0); -- 0
SELECT abs(NULL); -- NULL
char(X1, X2, ..., XN)와 chr(X)
char는 유니코드 코드 포인트 X1부터 XN에 해당하는 문자들로 이루어진 문자열을 반환해요. 유효한 코드 포인트가 아닌 인수는 유니코드 치환 문자(U+FFFD)로 바뀌어요.
chr은 PostgreSQL과 SQL 표준 호환성을 위해 제공되는 단일 인수 별칭이에요. char(X)와 동일해요.
SELECT char(72, 101, 108, 108, 111); -- 'Hello'
SELECT char(9731); -- snowman character
SELECT hex(char(0)); -- '00'
SELECT chr(65); -- 'A'
coalesce(X, Y, ...)
NULL이 아닌 첫 번째 인수를 반환해요. 모든 인수가 NULL이면 NULL을 반환해요. 최소 두 개의 인수가 필요해요.
SELECT coalesce(NULL, NULL, 'fallback'); -- 'fallback'
SELECT coalesce(1, 2, 3); -- 1
SELECT coalesce(NULL, 42); -- 42
concat(X, ...)와 concat_ws(SEP, X, ...)
concat은 NULL을 건너뛰면서 모든 인수를 문자열로 이어 붙여요. concat_ws는 NULL이 아닌 인수 사이에 구분자를 넣어요.
SELECT concat('Hello', ' ', 'World'); -- 'Hello World'
SELECT concat('a', NULL, 'b'); -- 'ab'
SELECT concat_ws(', ', 'Alice', 'Bob', NULL, 'Carol'); -- 'Alice, Bob, Carol'
SELECT concat_ws('-', 2024, 1, 15); -- '2024-1-15'
format(FORMAT, ...)와 printf(FORMAT, ...)
printf 스타일 형식 지정자로 포맷된 문자열을 반환해요. printf는 format의 별칭이에요.
| 지정자 | 설명 |
|---|---|
%d |
부호 있는 정수 |
%f |
부동소수점 |
%s |
문자열 |
%x |
소문자 16진수 정수 |
%X |
대문자 16진수 정수 |
%o |
8진수 정수 |
%e |
과학적 표기법 |
%g |
일반 부동소수점 (가장 짧은 표현) |
%% |
리터럴 퍼센트 기호 |
SELECT format('Hello, %s! You are #%d.', 'Alice', 1);
-- 'Hello, Alice! You are #1.'
SELECT printf('%.2f%%', 99.5);
-- '99.50%'
SELECT format('0x%08X', 255);
-- '0x000000FF'
glob(X, Y)
문자열 Y가 glob 패턴 X와 일치하면 1, 아니면 0을 반환해요. glob 매칭은 대소문자를 구별하고, *는 임의 문자열에, ?는 임의 한 문자에, [...]는 문자 클래스에 쓰여요.
SELECT glob('*.txt', 'readme.txt'); -- 1
SELECT glob('*.TXT', 'readme.txt'); -- 0 (case-sensitive)
SELECT glob('H?llo', 'Hello'); -- 1
`glob(X, Y)` 함수는 `Y GLOB X` 연산자를 함수 형태로 쓴 거예요. 연산자 문법과 인수 순서가 뒤집혀 있으니 주의하세요.
hex(X)와 unhex(X)
hex는 인수의 대문자 16진수 표현을 반환해요. 텍스트는 UTF-8 바이트의 16진수 인코딩을, blob은 각 바이트를 인코딩해서, 정수는 값의 16진수를 반환해요.
unhex는 16진수 문자열을 다시 blob으로 변환해요. 입력에 16진수가 아닌 문자가 있으면, 두 번째 인수로 무시할 문자를 지정하지 않는 한 NULL을 반환해요.
SELECT hex('ABC'); -- '414243'
SELECT hex(255); -- 'FF'
SELECT hex(x'CAFE'); -- 'CAFE'
SELECT unhex('48454C4C4F'); -- x'48454C4C4F' (blob for 'HELLO')
SELECT unhex('48-45-4C', '-'); -- x'48454C' (ignoring dashes)
SELECT unhex('ZZZZ'); -- NULL (invalid hex)
iif(X, Y, Z)와 if(X, Y, Z)
X가 참(0이 아니고 NULL이 아님)이면 Y, 아니면 Z를 반환해요. if는 iif의 별칭이에요.
SELECT iif(1 > 0, 'yes', 'no'); -- 'yes'
SELECT iif(NULL, 'yes', 'no'); -- 'no'
SELECT if(10 > 5, 'big', 'small'); -- 'big'
instr(X, Y)와 strpos(X, Y)
문자열 X에서 문자열 Y가 처음 나오는 위치(1부터 시작)를 반환해요. Y를 찾지 못하면 0을 반환해요. 어느 한쪽 인수가 NULL이면 NULL을 반환해요.
strpos는 같은 인수 순서를 가진 PostgreSQL 호환 별칭이에요.
SELECT instr('Hello World', 'World'); -- 7
SELECT instr('Hello World', 'xyz'); -- 0
SELECT instr('abcabc', 'bc'); -- 2
SELECT strpos('Hello World', 'World'); -- 7
length(X), char_length(X), character_length(X), octet_length(X)
length는 텍스트 값이면 문자 수를, blob 값이면 바이트 수를 반환해요. NULL이면 NULL을 반환해요. 수치 값이면 텍스트 표현의 길이를 반환해요.
char_length와 character_length는 length의 SQL 표준 별칭으로, PostgreSQL 등 다른 엔진과의 호환성을 위해 받아들여요.
octet_length는 타입과 무관하게 항상 바이트 단위 길이를 반환해요.
SELECT length('Hello'); -- 5
SELECT length(x'AABBCC'); -- 3 (bytes for blob)
SELECT length(12345); -- 5 (text representation)
SELECT char_length('café'); -- 4 (counts characters, not bytes)
SELECT character_length('café'); -- 4
SELECT octet_length('Hello'); -- 5 (ASCII, 1 byte per char)
SELECT octet_length('café'); -- 5 (é is 2 bytes in UTF-8)
like(X, Y)와 like(X, Y, Z)
문자열 Y가 LIKE 패턴 X와 일치하면 1, 아니면 0을 반환해요. %는 임의 문자열에, _는 임의 한 문자에 대응해요. ASCII 문자에 대해서는 대소문자를 무시해요. 선택적인 세 번째 인수 Z는 이스케이프 문자를 지정해요.
SELECT like('%ello%', 'Hello World'); -- 1
SELECT like('H_llo', 'Hello'); -- 1
SELECT like('10\%%', '10% discount', '\'); -- 1 (escaped %)
`like(X, Y)` 함수는 `Y LIKE X` 연산자를 함수 형태로 쓴 거예요. 연산자 문법과 인수 순서가 뒤집혀 있으니 주의하세요.
lower(X), upper(X)
lower는 문자열 X의 모든 ASCII 문자를 소문자로 바꾼 사본을 반환해요. upper는 대문자로 바꿔요.
SELECT lower('Hello World'); -- 'hello world'
SELECT upper('Hello World'); -- 'HELLO WORLD'
ltrim(X), rtrim(X), trim(X), btrim(X)
이 함수들은 문자열 끝에서 문자를 제거해요. 두 번째 인수가 없으면 공백을 제거해요. 두 번째 인수 Y가 있으면 문자열 Y에 있는 문자들을 제거해요.
btrim은 trim의 PostgreSQL/Oracle 호환 별칭이에요 (한 인수 형태와 두 인수 형태 모두).
-- Whitespace trimming
SELECT ltrim(' Hello'); -- 'Hello'
SELECT rtrim('Hello '); -- 'Hello'
SELECT trim(' Hello '); -- 'Hello'
SELECT btrim(' Hello '); -- 'Hello'
-- Character trimming
SELECT ltrim('xxxHello', 'x'); -- 'Hello'
SELECT rtrim('Helloyyy', 'y'); -- 'Hello'
SELECT trim('***Hello***', '*'); -- 'Hello'
SELECT trim('abcHelloabc', 'abc'); -- 'Hello' (removes any of a, b, or c)
SELECT btrim('xyzHelloxyz', 'xyz'); -- 'Hello'
max(X, Y, ...)와 min(X, Y, ...)
max와 min의 다중 인수 형태는 각각 가장 크거나 가장 작은 인수를 반환해요. 인수는 표준 SQLite 비교 규칙으로 비교돼요. 인수 중 하나라도 NULL이면 결과는 NULL이에요.
SELECT max(1, 5, 3); -- 5
SELECT min(1, 5, 3); -- 1
SELECT max('apple', 'banana'); -- 'banana'
SELECT min(10, NULL, 3); -- NULL
다중 인수 `max()`와 `min()`은 스칼라 함수예요. 집계 쿼리 안에서 단일 인수로 호출되면 (예: `SELECT max(salary) FROM employees`), [집계 함수](/sql-reference/functions/aggregate)로 동작해요.
nullif(X, Y)
X와 Y가 같으면 NULL, 아니면 X를 반환해요. 센티널 값을 NULL로 바꿀 때 유용해요.
SELECT nullif(0, 0); -- NULL
SELECT nullif(5, 0); -- 5
SELECT nullif('N/A', 'N/A'); -- NULL
SELECT nullif('hello', ''); -- 'hello'
quote(X)
값 X를 나타내는 SQL 리터럴 텍스트를 반환해요. 문자열은 이스케이프 처리된 작은따옴표로 감싸져요. BLOB은 16진수 리터럴로 인코딩돼요. NULL은 문자열 'NULL'을 반환해요. 숫자는 그대로 반환돼요.
SELECT quote('it''s'); -- '''it''s'''
SELECT quote(42); -- '42'
SELECT quote(NULL); -- 'NULL'
SELECT quote(x'CAFE'); -- 'X''CAFE'''
random()과 randomblob(N)
random은 의사 난수 64비트 부호 있는 정수를 반환해요. randomblob은 의사 난수 바이트 N개짜리 blob을 반환해요.
SELECT random(); -- e.g., -4520312828827489743
SELECT hex(randomblob(4)); -- e.g., 'A1B2C3D4' (4 random bytes)
SELECT abs(random()) % 100; -- random number between 0 and 99
lpad(X, N)와 lpad(X, N, F)
문자열 X의 왼쪽을 채움 문자열 F로 채워서 결과가 정확히 N 문자가 되게 해요. F의 기본값은 공백 하나예요. X가 이미 N 문자 이상이면 오른쪽에서 잘라서 길이 N으로 만들어요. F가 두 문자 이상이면 순환해서 사용돼요. 어느 인수든 NULL이면 NULL을 반환해요. F가 빈 문자열이면 입력을 그대로 반환해요.
길이는 바이트가 아니라 유니코드 문자 수로 세기 때문에, 여러 바이트를 차지하는 입력도 올바르게 채워져요.
SELECT lpad('abc', 6); -- ' abc'
SELECT lpad('abc', 6, 'xy'); -- 'xyxabc'
SELECT lpad('abcdef', 3); -- 'abc' (truncated from the right)
SELECT lpad('aéc', 4); -- ' aéc' (character count, not bytes)
SELECT lpad('abc', 10, ''); -- 'abc' (empty fill)
SELECT lpad(NULL, 5); -- NULL
rpad(X, N)와 rpad(X, N, F)
문자열 X의 오른쪽을 채움 문자열 F로 채워서 결과가 정확히 N 문자가 되게 해요. F의 기본값은 공백 하나예요. 잘림, 채움 순환, NULL 전파, 빈 채움 처리는 모두 lpad와 동일해요 (위 섹션 참고).
SELECT rpad('abc', 6); -- 'abc '
SELECT rpad('abc', 6, 'xy'); -- 'abcxyx'
SELECT rpad('abcdef', 3); -- 'abc' (truncated from the right)
SELECT rpad('aéc', 4); -- 'aéc '
repeat(X, N)
문자열 X를 N번 이어 붙인 문자열을 반환해요. N <= 0이면 빈 문자열을 반환해요. 어느 한쪽 인수가 NULL이면 NULL을 반환해요. 텍스트가 아닌 입력은 먼저 텍스트 표현으로 변환돼요.
SELECT repeat('ab', 3); -- 'ababab'
SELECT repeat('x', 0); -- ''
SELECT repeat('x', -1); -- ''
SELECT repeat('', 5); -- ''
SELECT repeat(NULL, 3); -- NULL
replace(X, Y, Z)
문자열 X에서 문자열 Y가 나올 때마다 문자열 Z로 바꾼 사본을 반환해요. Y가 빈 문자열이면 X를 그대로 반환해요.
SELECT replace('Hello World', 'World', 'Turso'); -- 'Hello Turso'
SELECT replace('aabbcc', 'bb', 'XX'); -- 'aaXXcc'
SELECT replace('2024-01-15', '-', '/'); -- '2024/01/15'
reverse(X)와 string_reverse(X)
문자열 X의 문자들을 거꾸로 배열한 문자열을 반환해요. 뒤집기는 유니코드 문자 단위로 이루어지기 때문에, 여러 바이트를 차지하는 문자도 온전히 보존돼요. X가 NULL이면 NULL을 반환해요. 텍스트가 아닌 입력은 먼저 텍스트 표현으로 변환돼요.
reverse는 PostgreSQL(17 버전부터), MySQL, Oracle 철자고, string_reverse는 Turso의 정식 이름이에요. 둘은 서로 바꿔 쓸 수 있어요.
SELECT reverse('hello'); -- 'olleh'
SELECT reverse(''); -- ''
SELECT reverse('café'); -- 'éfac'
SELECT string_reverse('abc'); -- 'cba'
SELECT reverse(NULL); -- NULL
round(X)와 round(X, Y)
X를 소수점 Y자리까지 반올림해요. Y를 생략하면 기본값은 0이에요. 반환 타입은 항상 REAL이에요.
SELECT round(3.7); -- 4.0
SELECT round(3.14159, 2); -- 3.14
SELECT round(2.5); -- 3.0
SELECT round(-2.5); -- -3.0
sign(X)
음수면 -1, 0이면 0, 양수면 1을 반환해요. X가 NULL이면 NULL을 반환해요.
SELECT sign(-42); -- -1
SELECT sign(0); -- 0
SELECT sign(3.14); -- 1
SELECT sign(NULL); -- NULL
substr(X, Y)와 substr(X, Y, Z)
X의 Y번째 문자(1부터 시작)부터 시작하는 부분 문자열을 반환해요. Z를 주면 부분 문자열은 최대 Z 문자 길이가 돼요. Y가 음수면 문자열 끝에서부터 세어요. substring은 별칭이에요.
SELECT substr('Hello World', 7); -- 'World'
SELECT substr('Hello World', 1, 5); -- 'Hello'
SELECT substr('Hello World', -5); -- 'World'
SELECT substring('Hello', 2, 3); -- 'ell'
typeof(X)
X의 저장 클래스를 소문자 문자열로 반환해요: "null", "integer", "real", "text", "blob".
SELECT typeof(42); -- 'integer'
SELECT typeof(3.14); -- 'real'
SELECT typeof('hello'); -- 'text'
SELECT typeof(NULL); -- 'null'
SELECT typeof(x'CAFE'); -- 'blob'
SELECT typeof(1 + 1.0); -- 'real'
unicode(X)
문자열 X의 첫 문자의 유니코드 코드 포인트를 반환해요. X가 NULL이거나 빈 문자열이면 NULL을 반환해요.
SELECT unicode('A'); -- 65
SELECT unicode('Hello'); -- 72 (code point of 'H')
soundex(X)
문자열 X의 Soundex 인코딩을 네 문자 코드로 반환해요. Soundex는 영어 발음을 기준으로 문자열을 인코딩해서, 이름의 퍼지(fuzzy) 매칭에 유용해요.
SELECT soundex('Robert'); -- 'R163'
SELECT soundex('Rupert'); -- 'R163'
SELECT soundex('Smith'); -- 'S530'
SELECT soundex('Smythe'); -- 'S530'
zeroblob(N)
0 바이트(0x00) N개로 이루어진 blob을 반환해요. blob 저장 공간을 미리 할당할 때 유용해요.
SELECT length(zeroblob(10)); -- 10
SELECT hex(zeroblob(4)); -- '00000000'
last_insert_rowid()
현재 데이터베이스 연결에서 가장 최근에 성공한 INSERT의 rowid를 반환해요. INSERT가 한 번도 없었다면 0을 반환해요.
CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);
INSERT INTO users (name) VALUES ('Alice');
SELECT last_insert_rowid(); -- 1
INSERT INTO users (name) VALUES ('Bob');
SELECT last_insert_rowid(); -- 2
changes()와 total_changes()
changes는 가장 최근의 INSERT, UPDATE, DELETE 문이 수정한 행 수를 반환해요. total_changes는 데이터베이스 연결이 열린 이후 수정된 총 행 수를 반환해요.
CREATE TABLE t (x INTEGER);
INSERT INTO t VALUES (1), (2), (3);
SELECT changes(); -- 3
DELETE FROM t WHERE x > 1;
SELECT changes(); -- 2
SELECT total_changes(); -- 5 (3 inserted + 2 deleted)
sqlite_version()
SQLite 호환 버전 문자열을 반환해요.
SELECT sqlite_version(); -- '3.42.0'
turso_version()
Turso 엔진의 버전 문자열을 반환해요.
SELECT turso_version(); -- e.g. '0.7.0'
load_extension(X)
경로 X의 공유 라이브러리에서 Turso 네이티브 확장을 로드해요.
SELECT load_extension('./my_extension');
확장 로드는 데이터베이스 연결에서 활성화되어 있어야 해요. 확장을 빌드하고 로드하는 방법은 [확장 문서](/docs/extensions)를 참고하세요.