常用函式
abs(X)
abs(X) 會傳回數字的絕對值。如果 X=NULL 則回傳 NULL,如果 X 是字串或 BLOB 則傳回 0.0。假如 X=-9223372036854775807 則會產生 integer overflow 例外,因為沒有相等的正 64bit 二進位補數(??? 翻得很奇怪)。(原文:If X is the integer -9223372036854775807 then abs(X) throws an integer overflow error since there is no equivalent positive 64-bit two complement value.)
avg(X)
計算 X 值的平均值,X=NULL 沒有加入計算。字串及 BLOB 看起來不像數字則被當成 0 值,其它會自動轉換成數字。當所有 X 皆為 NULL 則 avg(X) 回傳 NULL。avg(X) 回傳值為浮點數,即使 X 皆為整數也是回傳浮點數。
changes()
changes() 計算所有被執行的次數,包含 INSERT/DELETE/UPDATE。
coalesce(X,Y,...)
coalesce() 函數會傳回第一個非 NULL 的參數,如果所有參數皆為 NULL 則傳回 NULL。coalesce 最少要輸入二個參數。
count(X)
計算 X 的總筆數,X=NULL 沒有加入計算。
count()
計算記錄所有筆數。
glob(X,Y)
glob() 函數相當於 SQL 指令 "Y GLOB X"。
group_concat(X), group_concat(X, Y)
連結所有 X 值成一個字串,以 Y 值為連結字,如果沒有 Y 值,則以 "," 為連結字,X=NULL 沒有加入連結。X 加入連結的出現順序是隨機的,沒有規律。
hex(X)
hex() 函數把參數值當成一個 BLOB 看待,然後回傳一個大寫的 16 進位字串。
ifnull(X,Y)
ifnull(X,Y) 等於 coalesce(X,Y),會傳回第一個非 NULL 的參數, 如果二個參數皆為 NULL 則傳回 NULL。
last_insert_rowid()
last_insert_rowid() 函數會回傳最後一次新增記錄的 ROWID。
length(X)
傳回字串長度,BLOB 的總 bytes 數,X=NULL 則傳回 NULL,數字則先轉換成字串再傳回字串長度。
like(X,Y), like(X,Y,Z)
like() 函數相當於 SQL 指令 "Y LIKE X [ESCAPE Z]。
load_extension(X), load_extension(X,Y)
看嘸。
lower(X)
傳回小寫字串。
ltrim(X), ltrim(X,Y)
去除字串左邊所有的字元 'Y',位置從 X 開始。如果沒有輸入 Y,預設值為空白字元。
max(X)
計算最大值。
max(X,Y,...)
回傳參數中的最大值。參數必須有二個以上,如果只有一個參數,則變成 aggregate function。
min(X)
計算最小值。
min(X,Y,...)
回傳參數中的最小值。參數必須有二個以上,如果只有一個參數,則變成 aggregate function。
nullif(X,Y)
如果二個參數相同則傳回 NULL,二者不同則傳回 X。
quote(X)
quote() 函數是用來包裝輸入參數,方便插入 SQL 字串里,比如 BLOB 會編碼成 16進位字串。
random()
回傳一個亂數,範圍為 -9223372036854775808 到 +9223372036854775807。
randomblob(N)
回傳一個二進制的亂數,長度為 N。比如 randomblob(2) 會傳回 0~216(2 bytes) 的值。
replace(X,Y,Z)
把 X 中包含 Y 的字串替換成 Z。如果 Y 為空字串,則 X 不會被替換。
round(X), round(X,Y)
把浮點數 X 取小數點位數到 Y,並傳回字串,假如 Y 沒寫,則 X 會計算成整數。
rtrim(X), rtrim(X,Y)
去除字串右邊所有的字元 'Y',位置從 X 開始。如果沒有輸入 Y,預設值為空白字元。
soundex(X)
???
sqlite_compileoption_get(N)
???
sqlite_compileoption_used(X)
???
sqlite_source_id()
返回一個字串,表示那一版的原始碼被用來編譯成 SQLite library。
sqlite_version()
返回一個字串,表示 SQLite 的版本別。
substr(X,Y,Z), substr(X,Y)
截取 X 字串,從第 Y 個位置,長度為 Z。如果沒有輸入 Z,則截取到字串尾端。假如 Y 為負數,則開始位置則從字串尾端開始算起第 abs(Y) 個。如果 Z 為負數,則 Y 位置之前的字串會被截取,長度為 abs(Z)。
sum(X), total(X)
計算 X 值的總和,X=NULL 沒有加入計算。假如所 X 皆為 NULL,則 sum(X) 回傳 NULL,total(X) 回傳 0.0。total(X) 回傳值皆為浮點數。只要所有非 NULL 的 X 值皆為整數,則 sum(X) 回傳整數,否則會回傳一個近似值的浮點數。sum(X) 有可能會產生一個 "integer overflow" 的例外,但 total(X) 則不會產生任何例外。
total_changes()
total)changes 函數會返回記錄被更動過的總次數,包含 INSERT, UPDATE, DELETE。
trim(X), trim(X,Y)
去除字串左右兩邊所有的字元 'Y',位置從兩端的 X 開始。如果沒有輸入 Y,預設值為空白字元。
typeof(X)
返回 X 的資料型態,比如 null, integer, real, text, blob。
upper(X)
傳回大寫字串。
zeroblob(N)
傳回 N bytes 的二進制的 BLOB,內容皆為 0x00。