小. 快速. 可靠.
选择任意三个.

SQL As Understood By SQLite

[Top]

Core Functions

默认情况下,以下所示的核心功能可用. 日期和时间函数聚合函数窗口函数JSON函数分别记录在案. 应用程序可以使用sqlite3_create_function() API定义用C编写并添加到数据库引擎的其他函数.


abs(X)

abs(X)函数返回数字参数X的绝对值.如果X为NULL,则Abs(X)返回NULL. 如果X是无法转换为数值的字符串或Blob,则Abs(X)返回0.0. 如果X为整数-9223372036854775808,则abs(X)会引发整数溢出错误,因为没有等效的64位正两个补码值.

changes()

changes()函数返回由最近完成的INSERT,DELETE或UPDATE语句更改,插入或删除的数据库行数,不包括低级触发器中的语句. changes()SQL函数是sqlite3_changes() C / C ++函数的包装,因此遵循相同的计数变化规则.

char(X1,X2,...,XN)

char(X1,X2,...,XN)函数返回一个字符串,该字符串由具有Unicode代码点值分别为整数X1到XN的字符组成.

coalesce(X,Y,...)

coalesce()函数返回其第一个非NULL参数的副本,如果所有参数均为NULL,则返回NULL. Coalesce()必须至少包含2个参数.

glob(X,Y)

glob(X,Y)函数等效于表达式" Y GLOB X ". 请注意,相对于中缀GLOB运算符,glob()函数中的X和Y参数是相反的. Y是字符串,X是模式. 因此,例如,以下表达式是等效的:

     name GLOB '*helium*'
     glob('*helium*',name)
  

如果使用sqlite3_create_function()接口使用替代实现覆盖glob(X,Y)函数,则GLOB运算符将调用替代实现.

hex(X)

hex()函数将其参数解释为BLOB,并返回一个字符串,该字符串是该blob内容的大写十六进制表示形式.

ifnull(X,Y)

ifnull()函数返回其第一个非NULL参数的副本,如果两个参数均为NULL,则返回NULL. Ifnull()必须正好有2个参数. ifnull()函数等效于带有两个参数的coalesce() .

instr(X,Y)

instr(X,Y)函数在字符串X中查找字符串Y的第一个匹配项,并返回前一个字符的数量加1;如果在X中找不到Y,则返回0.或者,如果X和Y都是BLOB,则instr (X,Y)返回的值比第一次出现Y之前的字节数大;如果Y在X内的任何地方都没有出现,则返回0.如果instr(X,Y)的参数X和Y均为非NULL并且不是BLOB,则两者都被解释为字符串. 如果instr(X,Y)中X或Y为NULL,则结果为NULL.

last_insert_rowid()

last_insert_rowid()函数从调用该函数的数据库连接返回最后一行插入的ROWID . last_insert_rowid()SQL函数是sqlite3_last_insert_rowid() C / C ++接口函数的包装.

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)

like()函数用于实现" Y LIKE X [ESCAPE Z] "表达式. 如果存在可选的ESCAPE子句,则使用三个参数调用like()函数. 否则,仅使用两个参数调用它. 请注意,在like()函数中,相对于infix LIKE运算符,X和Y参数是相反的. X是模式,Y是与该模式匹配的字符串. 因此,以下表达式是等效的:

  名称LIKE'%neon%'
      喜欢('%neon%',name)
  
sqlite3_create_function()接口可用于覆盖like()函数,从而更改LIKE运算符的操作. 覆盖like()函数时,同时覆盖like()函数的两个和三个参数版本可能很重要. 否则,根据是否指定了ESCAPE子句,可以调用不同的代码来实现LIKE运算符.

likelihood(X,Y)

似然性(X,Y)函数返回参数X不变. 似然性(X,Y)中的值Y必须是介于0.0和1.0之间(包括端点)的浮点常量. 似然(X)函数是一种无操作,代码生成器会对其进行优化,以使其在运行时(即在调用sqlite3_step()期间不占用任何CPU周期. 似然的(X,Y)的目的的功能是提供一个提示来查询规划该参数X是一个布尔值,是真正用约Y的概率不可能的(X)函数是短手的可能性( X,0.0625). 可能性(X)函数是可能性(X,0.9375)的简写.

likely(X)

可能的(X)函数返回参数X不变. 可能(X)函数是一个无操作函数,代码生成器会对其进行优化,以使其在运行时(即在调用sqlite3_step()期间不占用任何CPU周期. Possible(X)函数的目的是向查询计划者提供提示,表明参数X是通常为true的布尔值. 可能性(X)函数等效于可能性 (X,0.9375). 另请参阅: 不太可能(X) .

load_extension(X)
load_extension(X,Y)

The load_extension(X,Y) function loads SQLite extensions out of the shared library file named X using the entry point Y. The result of load_extension() is always a NULL. If Y is omitted then the default entry point name is used. The load_extension() function raises an exception if the extension fails to load or initialize correctly.

如果扩展尝试修改或删除SQL函数或整理序列,则load_extension()函数将失败. 该扩展可以添加新功能或整理序列,但不能修改或删除现有功能或整理序列,因为这些功能和/或整理序列可能在当前运行的SQL语句中的其他位置使用. 要加载更改或删除函数或整理序列的扩展,请使用sqlite3_load_extension() C语言API.

出于安全原因,加载的扩展名默认情况下处于关闭状态,并且必须通过事先调用sqlite3_enable_load_extension()来启用.

lower(X)

lower(X)函数返回字符串X的副本,其中所有ASCII字符都转换为小写. 默认的内置lower()函数仅适用于ASCII字符. 要对非ASCII字符进行大小写转换,请加载ICU扩展名.

ltrim(X)
ltrim(X,Y)

ltrim(X,Y)函数返回一个字符串,该字符串是通过从X的左侧删除出现在Y中的任何和所有字符形成的.如果省略Y参数,ltrim(X)将从X的左侧删除空格.

max(X,Y,...)

多参数max()函数返回具有最大值的参数,如果任何参数为NULL,则返回NULL. 多参数max()函数从左到右搜索其参数,以找到定义整理函数并将该整理函数用于所有字符串比较的参数. 如果max()的参数均未定义整理函数,则使用BINARY整理函数. 请注意,当max()具有2个或更多参数时,它是一个简单函数,但如果仅给出单个参数,则它作为聚合函数运行.

min(X,Y,...)

多参数min()函数返回具有最小值的参数. 多参数min()函数从左到右搜索其参数,以定义一个定义整理函数的参数,并将该整理函数用于所有字符串比较. 如果min()的参数均未定义整理函数,则使用BINARY整理函数. 请注意,当min()具有2个或更多参数时,它是一个简单的函数;但是,如果仅给定单个参数,则它将作为一个聚合函数 .

nullif(X,Y)

如果参数不同,则nullif(X,Y)函数返回其第一个参数,如果参数相同,则返回NULL. nullif(X,Y)函数从左到右在其参数中搜索定义整理函数并将该整理函数用于所有字符串比较的参数. 如果nullif()的两个参数都未定义整理函数,则使用BINARY.

printf(FORMAT,...)

The printf(FORMAT,...) SQL function works like the sqlite3_mprintf() C-language function and the printf() function from the standard C library. The first argument is a format string that specifies how to construct the output string using values taken from subsequent arguments. If the FORMAT argument is missing or NULL then the result is NULL. The %n format is silently ignored and does not consume an argument. The %p format is an alias for %X. The %z format is interchangeable with %s. If there are too few arguments in the argument list, missing arguments are assumed to have a NULL value, which is translated into 0 or 0.0 for numeric formats or an empty string for %s. See the built-in printf() documentation for additional information.

quote(X)

quote(X)函数返回SQL文字的文本,该文本是其参数的值,适合包含在SQL语句中. 字符串被单引号引起来,并根据需要在内部引号上进行转义. BLOB被编码为十六进制文字. 带有嵌入式NUL字符的字符串不能在SQL中表示为字符串文字,因此返回的字符串文字会在第一个NUL之前被截断.

random()

random()函数返回介于-9223372036854775808和+9223372036854775807之间的伪随机整数.

randomblob(N)

randomblob(N)函数返回一个包含伪随机字节的N字节Blob. 如果N小于1,则返回1字节的随机Blob.

提示:应用程序可以使用此函数与hex()和/或lower()一起生成全局唯一标识符,如下所示:

hex(randomblob(16))

lower(hex(randomblob(16)))

replace(X,Y,Z)

replace(X,Y,Z)函数返回一个字符串,该字符串是用字符串Z替换字符串X中每次出现的字符串Y形成的字符串.BINARY整理序列用于比较. 如果Y为空字符串,则返回X不变. 如果Z最初不是字符串,则在处理之前将其强制转换为UTF-8字符串.

round(X)
round(X,Y)

round(X,Y)函数返回浮点值X,该值四舍五入到小数点右边的Y位. 如果省略Y参数,则假定为0.

rtrim(X)
rtrim(X,Y)

rtrim(X,Y)函数返回一个字符串,该字符串是通过从X的右侧删除出现在Y中的任何和所有字符形成的.如果省略Y参数,则rtrim(X)将从X的右侧删除空格.

soundex(X)

soundex(X)函数返回的字符串是字符串X的soundex编码.如果参数为NULL或不包含ASCII字母字符,则返回字符串"?000". 默认情况下,SQLite会省略此功能. 仅当构建SQLite时使用SQLITE_SOUNDEX编译时选项时,此选项才可用.

sqlite_compileoption_get(N)

sqlite_compileoption_get()SQL函数是对sqlite3_compileoption_get() C / C ++函数的包装. 此例程返回用于构建SQLite的第N个编译时选项;如果N超出范围,则返回NULL. 另请参见compile_options pragma .

sqlite_compileoption_used(X)

sqlite_compileoption_used()SQL函数是对sqlite3_compileoption_used() C / C ++函数的包装. 当sqlite_compileoption_used(X)的参数X是一个字符串,它是编译时选项的名称时,此例程将返回true(1)或false(0),具体取决于在构建过程中是否使用了该选项.

sqlite_offset(X)

sqlite_offset(X)函数返回数据库文件中记录要从中读取值的开头的字节偏移量. 如果X不是普通表中的列,则sqlite_offset(X)返回NULL. sqlite_offset(X)返回的值可能引用原始表或索引,具体取决于查询. 如果通常从索引中提取值X,则sqlite_offset(X)将偏移量返回到相应的索引记录. 如果将从原始表中提取值X,则sqlite_offset(X)将偏移量返回到表记录.

只有使用-DSQLITE_ENABLE_OFFSET_SQL_FUNC编译时选项构建SQLite时,sqlite_offset(X)SQL函数才可用.

sqlite_source_id()

sqlite_source_id()函数返回一个字符串,该字符串标识用于构建SQLite库的源代码的特定版本. sqlite_source_id()返回的字符串是签入源代码的日期和时间,后跟该签入的SHA1哈希. 该函数是sqlite3_sourceid() C接口的SQL包装器.

sqlite_version()

sqlite_version()函数返回正在运行的SQLite库的版本字符串. 此函数是围绕sqlite3_libversion() C接口的SQL包装.

substr(X,Y,Z)
substr(X,Y)

The substr(X,Y,Z) function returns a substring of input string X that begins with the Y-th character and which is Z characters long. substr(X,Y,Z)函数返回输入字符串X的子字符串,该子字符串以第Y个字符开头,长度为Z个字符. If Z is omitted then substr(X,Y) returns all characters through the end of the string X beginning with the Y-th. 如果省略Z,则substr(X,Y)返回从字符串X的第Y个开始的所有字符. The left-most character of X is number 1. If Y is negative then the first character of the substring is found by counting from the right rather than the left. X的最左字符是数字1.如果Y为负,则通过从右而不是从左开始计数来找到子字符串的第一个字符. If Z is negative then the abs(Z) characters preceding the Y-th character are returned. 如果Z为负,则返回第Y个字符之前的abs(Z)字符. If X is a string then characters indices refer to actual UTF-8 characters. 如果X是字符串,则字符索引是指实际的UTF-8字符. If X is a BLOB then the indices refer to bytes. 如果X是BLOB,则索引引用字节.

total_changes()

自打开当前数据库连接以来,total_changes()函数返回由INSERT,UPDATE或DELETE语句引起的行更改数. 该函数是sqlite3_total_changes() C / C ++接口的包装.

trim(X)
trim(X,Y)

trim(X,Y)函数返回一个字符串,该字符串是通过删除X两端出现在Y中的所有字符形成的.如果省略Y参数,trim(X)将从X两端删除空格.

typeof(X)

typeof(X)函数返回一个字符串,该字符串指示表达式X的数据类型 :" null"," integer"," real"," text"或" blob".

unicode(X)

unicode(X)函数返回与字符串X的第一个字符相对应的数字unicode代码点.如果unicode(X)的参数不是字符串,则结果不确定.

unlikely(X)

不大可能(X)函数返回参数X不变. 不大可能(X)函数是一个无操作函数,代码生成器会对其进行优化,以使其在运行时(即在调用sqlite3_step()期间不占用任何CPU周期. 不可能的(X)函数的目的是向查询计划者提供一个提示,即参数X是通常不是真的布尔值. 可能性函数(X)等于可能性 (X,0.0625).

upper(X)

upper(X)函数返回输入字符串X的副本,其中所有小写ASCII字符都转换为等效的大写字母.

zeroblob(N)

zeroblob(N)函数返回一个BLOB,该BLOB由N个0x00字节组成. SQLite非常有效地管理这些零点. Zeroblob可用于为BLOB保留空间,该空间随后使用增量BLOB I / O写入. 此SQL函数是使用C / C ++接口中的sqlite3_result_zeroblob()例程实现的.

by  ICOPY.SITE