SQLite核心函數《譯》

SQL As Understood By SQLite—SQL理解SQLite

  1. 前情提要 :最近在整理面試題,文章針對 [SQLite的核心函數指導]這篇文章做簡要翻譯和分析(http://www.sqlite.org/lang_corefunc.html),想通過這篇文章方便大家更多瞭解SQLite。
  2. 核心函數文章翻譯如下:

The core functions shown below are available by default. Date & Time functions, aggregate functions, and JSON functions are documented separately. An application may define additional functions written in C and added to the database engine using the sqlite3_create_function() API.

默認如下所示的核心功能是可用的。 日期和時間函數、聚合函數和JSON函數分別記錄。 一個應用程序可以用C語言定義額外的功能和添加到數據庫引擎通過sqlite3_create_function()API。

函數 函數說明
abs(X) (null,null)、(blob或string,0.0)、(X<=-9223372036854775808,溢出)
changes() changes()函數返回數據庫已更新的記錄數INSERT, DELETE, UPDATE 語句。
char(X1,X2,…,XN) 返回X1,X2,…,XN等UNICODE碼對應的字符。
coalesce(X,Y,…) 返回第一個非空參數,全爲NULL時返回NULL;參數至少包含兩個參數。
glob(X,Y) 等同於子句”Y GLOB X”, X=”*ab?”星號表示零個或多個數字或字符。?代表一個單一的數字或字符。
ifnull(X,Y) 返回第一個非空參數的副本。 若兩個參數均爲NULL,返回NULL。與coalesce()類似。
instr(X,Y) The instr(X,Y) function finds the first occurrence of string Y within string X and returns the number of prior characters plus 1, or 0 if Y is nowhere found within X. Or, if X and Y are both BLOBs, then instr(X,Y) returns one more than the number bytes prior to the first occurrence of Y, or 0 if Y does not occur anywhere within X. If both arguments X and Y to instr(X,Y) are non-NULL and are not BLOBs then both are interpreted as strings. If either X or Y are NULL in instr(X,Y) then the result is NULL.
hex(X) The hex() function interprets its argument as a BLOB and returns a string which is the upper-case hexadecimal rendering of the content of that blob.
last_insert_rowid() The last_insert_rowid() function returns the ROWID of the last row insert from the database connection which invoked the function. The last_insert_rowid() SQL function is a wrapper around the sqlite3_last_insert_rowid() C/C++ interface function.
length(X) For a string value X, the length(X) function returns the number of characters (not bytes) in X prior to the first NUL character. Since SQLite strings do not normally contain NUL characters, the length(X) function will usually return the total number of characters in the string X. For a blob value X, length(X) returns the number of bytes in the blob. If X is NULL then length(X) is NULL. If X is numeric then length(X) returns the length of a string representation of X.
like(X,Y) like(X,Y,Z) 用於實現SQL語法”X LIKE Y [ESCAPE Z]”.若使用可選的ESCAPE子句,則函數被賦予三個參數,否則只有兩個。可使用sqlite3_create_function() 重載該函數從而改變LIKE運算符的功能。 注意同時重載like()的兩參數和三參數版本,否則在使用/不使用 ESCAPE子句時,LIKE運算符的實現可能使用的是不同的代碼。
ikelihood(X,Y) The likelihood(X,Y) function returns argument X unchanged. The value Y in likelihood(X,Y) must be a floating point constant between 0.0 and 1.0, inclusive. The likelihood(X) function is a no-op that the code generator optimizes away so that it consumes no CPU cycles during run-time (that is, during calls to sqlite3_step()). The purpose of the likelihood(X,Y) function is to provide a hint to the query planner that the argument X is a boolean that is true with a probability of approximately Y. The unlikely(X) function is short-hand for likelihood(X,0.0625).
load_extension(X) load_extension(X,Y) 嘗試加載一個SQLite擴展庫
lower(X) 轉換爲小寫
ltrim(X) ltrim(X,Y) The ltrim(X,Y) function returns a string formed by removing any and all characters that appear in Y from the left side of X. If the Y argument is omitted, ltrim(X) removes spaces from the left side of X.
max(X,Y,…) 返回一組中的最大值。
min(X,Y,…) 返回一組中的最小值。
nullif(X,Y) 當兩參數不同時返回X,否則返回NULL。
quote(X) 返回參數的適於插入其它SQL語句中的值。字符串會被添加單引號,在內部的引號前會加入逃逸符號。 BLOB被編碼爲十六進制文本。當前的VACUUM使用這一函數實現。在使用觸發器實現撤銷/重做功能時這一函數也很有用。
random() 返回一個[-9223372036854775808,+9223372036854775807]區間內的隨機數
randomblob(N) The randomblob(N) function return an N-byte blob containing pseudo-random bytes. If N is less than 1 then a 1-byte random blob is returned. Hint: applications can generate globally unique identifiers using this function together with hex() and/or lower() like this:hex(randomblob(16))lower(hex(randomblob(16)))
replace(X,Y,Z) The replace(X,Y,Z) function returns a string formed by substituting string Z for every occurrence of string Y in string X. The BINARY collating sequence is used for comparisons. If Y is an empty string then return X unchanged. If Z is not initially a string, it is cast to a UTF-8 string prior to processing.
round(X) round(X,Y) 將X四捨五入,保留小數點後Y位。若忽略Y參數,則默認其爲0。
rtrim(X) rtrim(X,Y) rtrim(X,Y) 返回去除X串右邊的Y字符的副本rtrim(X) 返回去除X串右邊的空格字符的副本。
soundex(X) The soundex(X) function returns a string that is the soundex encoding of the string X. The string “?000” is returned if the argument is NULL or contains no ASCII alphabetic characters. This function is omitted from SQLite by default. It is only available if the SQLITE_SOUNDEX compile-time option is used when SQLite is built.
sqlite_compileoption_get(N) The sqlite_compileoption_get() SQL function is a wrapper around the sqlite3_compileoption_get() C/C++ function. This routine returns the N-th compile-time option used to build SQLite or NULL if N is out of range. See also the compile_options pragma.
sqlite_compileoption_used(X) The sqlite_compileoption_used() SQL function is a wrapper around the sqlite3_compileoption_used() C/C++ function. When the argument X to sqlite_compileoption_used(X) is a string which is the name of a compile-time option, this routine returns true (1) or false (0) depending on whether or not that option was used during the build.
sqlite_source_id() The sqlite_source_id() function returns a string that identifies the specific version of the source code that was used to build the SQLite library. The string returned by sqlite_source_id() begins with the date and time that the source code was checked in and is follows by an SHA1 hash that uniquely identifies the source tree. This function is an SQL wrapper around the sqlite3_sourceid() C interface.
sqlite_version() 返回SQLite數據庫版本信息
substr(X,Y,Z)substr(X,Y) 返回輸入字符串X中以第Y個字符開始,Z個字符長的子串。 X最左端的字符序號爲1。若Y爲負,則從右至左數起。若SQLite配置支持UTF-8,則“字符”代表的是UTF-8字符而非字節。
total_changes() The total_changes() function returns the number of row changes caused by INSERT, UPDATE or DELETE statements since the current database connection was opened. This function is a wrapper around the sqlite3_total_changes() C/C++ interface.
trim(X) trim(X,Y) The trim(X,Y) function returns a string formed by removing any and all characters that appear in Y from both ends of X. If the Y argument is omitted, trim(X) removes spaces from both ends of X.
typeof(X) 返回表達式X的類型。返回值可能爲”null”, “integer”, “real”, “text”, 以及 “blob”.
unlikely(X) The unlikely(X) function returns the argument X unchanged. The unlikely(X) function is a no-op that the code generator optimizes away so that it consumes no CPU cycles at run-time (that is, during calls to sqlite3_step()). The purpose of the unlikely(X) function is to provide a hint to the query planner that the argument X is a boolean value that is usually not true. The unlikely(X) function is equivalent to likelihood(X, 0.0625).
unicode(X) The unicode(X) function returns the numeric unicode code point corresponding to the first character of the string X. If the argument to unicode(X) is not a string then the result is undefined.
upper(X) 轉換爲大寫
zeroblob(N) The zeroblob(N) function returns a BLOB consisting of N bytes of 0x00. SQLite manages these zeroblobs very efficiently. Zeroblobs can be used to reserve space for a BLOB that is later written using incremental BLOB I/O. This SQL function is implemented using the sqlite3_result_zeroblob() routine from the C/C++ interface.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章