常用函式

  1. abs(X)

      1. 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.)

  2. avg(X)

      1. 計算 X 值的平均值,X=NULL 沒有加入計算。字串及 BLOB 看起來不像數字則被當成 0 值,其它會自動轉換成數字。當所有 X 皆為 NULL 則 avg(X) 回傳 NULL。avg(X) 回傳值為浮點數,即使 X 皆為整數也是回傳浮點數。

  1. changes()

      1. changes() 計算所有被執行的次數,包含 INSERT/DELETE/UPDATE。

  2. coalesce(X,Y,...)

      1. coalesce() 函數會傳回第一個非 NULL 的參數,如果所有參數皆為 NULL 則傳回 NULL。coalesce 最少要輸入二個參數。

  1. count(X)

      1. 計算 X 的總筆數,X=NULL 沒有加入計算。

  1. count()

      1. 計算記錄所有筆數。

  1. glob(X,Y)

      1. glob() 函數相當於 SQL 指令 "Y GLOB X"。

  2. group_concat(X), group_concat(X, Y)

      1. 連結所有 X 值成一個字串,以 Y 值為連結字,如果沒有 Y 值,則以 "," 為連結字,X=NULL 沒有加入連結。X 加入連結的出現順序是隨機的,沒有規律。

  1. hex(X)

      1. hex() 函數把參數值當成一個 BLOB 看待,然後回傳一個大寫的 16 進位字串。

  1. ifnull(X,Y)

      1. ifnull(X,Y) 等於 coalesce(X,Y),會傳回第一個非 NULL 的參數, 如果二個參數皆為 NULL 則傳回 NULL。

  1. last_insert_rowid()

      1. last_insert_rowid() 函數會回傳最後一次新增記錄的 ROWID。

  2. length(X)

      1. 傳回字串長度,BLOB 的總 bytes 數,X=NULL 則傳回 NULL,數字則先轉換成字串再傳回字串長度。

  1. like(X,Y), like(X,Y,Z)

      1. like() 函數相當於 SQL 指令 "Y LIKE X [ESCAPE Z]。

  1. load_extension(X), load_extension(X,Y)

      1. 看嘸。

  1. lower(X)

      1. 傳回小寫字串。

  1. ltrim(X), ltrim(X,Y)

      1. 去除字串左邊所有的字元 'Y',位置從 X 開始。如果沒有輸入 Y,預設值為空白字元。

  1. max(X)

      1. 計算最大值。

  2. max(X,Y,...)

      1. 回傳參數中的最大值。參數必須有二個以上,如果只有一個參數,則變成 aggregate function。

  1. min(X)

      1. 計算最小值。

  1. min(X,Y,...)

      1. 回傳參數中的最小值。參數必須有二個以上,如果只有一個參數,則變成 aggregate function。

  1. nullif(X,Y)

      1. 如果二個參數相同則傳回 NULL,二者不同則傳回 X。

  1. quote(X)

      1. quote() 函數是用來包裝輸入參數,方便插入 SQL 字串里,比如 BLOB 會編碼成 16進位字串。

  1. random()

      1. 回傳一個亂數,範圍為 -9223372036854775808 到 +9223372036854775807。

  2. randomblob(N)

      1. 回傳一個二進制的亂數,長度為 N。比如 randomblob(2) 會傳回 0~216(2 bytes) 的值。

  1. replace(X,Y,Z)

      1. 把 X 中包含 Y 的字串替換成 Z。如果 Y 為空字串,則 X 不會被替換。

  1. round(X), round(X,Y)

      1. 把浮點數 X 取小數點位數到 Y,並傳回字串,假如 Y 沒寫,則 X 會計算成整數。

  1. rtrim(X), rtrim(X,Y)

      1. 去除字串右邊所有的字元 'Y',位置從 X 開始。如果沒有輸入 Y,預設值為空白字元。

  1. soundex(X)

      1. ???

  2. sqlite_compileoption_get(N)

      1. ???

  1. sqlite_compileoption_used(X)

      1. ???

  1. sqlite_source_id()

      1. 返回一個字串,表示那一版的原始碼被用來編譯成 SQLite library。

  1. sqlite_version()

      1. 返回一個字串,表示 SQLite 的版本別。

  1. substr(X,Y,Z), substr(X,Y)

      1. 截取 X 字串,從第 Y 個位置,長度為 Z。如果沒有輸入 Z,則截取到字串尾端。假如 Y 為負數,則開始位置則從字串尾端開始算起第 abs(Y) 個。如果 Z 為負數,則 Y 位置之前的字串會被截取,長度為 abs(Z)。

  1. sum(X), total(X)

      1. 計算 X 值的總和,X=NULL 沒有加入計算。假如所 X 皆為 NULL,則 sum(X) 回傳 NULL,total(X) 回傳 0.0。total(X) 回傳值皆為浮點數。只要所有非 NULL 的 X 值皆為整數,則 sum(X) 回傳整數,否則會回傳一個近似值的浮點數。sum(X) 有可能會產生一個 "integer overflow" 的例外,但 total(X) 則不會產生任何例外。

  1. total_changes()

      1. total)changes 函數會返回記錄被更動過的總次數,包含 INSERT, UPDATE, DELETE。

  2. trim(X), trim(X,Y)

      1. 去除字串左右兩邊所有的字元 'Y',位置從兩端的 X 開始。如果沒有輸入 Y,預設值為空白字元。

  1. typeof(X)

      1. 返回 X 的資料型態,比如 null, integer, real, text, blob。

  1. upper(X)

      1. 傳回大寫字串。

  1. zeroblob(N)

      1. 傳回 N bytes 的二進制的 BLOB,內容皆為 0x00。