小. 快速. 可靠.
选择任意三个.
内置标量SQL函数

1. Overview

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

2. Descriptions of built-in scalar SQL functions

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

iif(X,Y,Z)

如果X为true,则iif(X,Y,Z)函数返回值Y,否则返回Z. iif(X,Y,Z)函数在逻辑上等效于CASE表达式 " CASE WHEN X THEN Y ELSE Z END",并生成相同的字节码 .

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)

对于字符串值X,length(X)函数返回第一个NUL字符之前的X中的字符数(不是字节). 由于SQLite字符串通常不包含NUL字符,因此length(X)函数通常将返回字符串X中的字符总数.对于Blob值X,length(X)返回Blob中的字节数. 如果X为NULL,则length(X)为NULL. 如果X是数字,则length(X)返回X的字符串表示形式的长度.

like(X,Y)
like(X,Y,Z)

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

     name LIKE '%neon%'
     like('%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周期. 可能性(X)函数的目的是向查询计划者提供一个提示,即参数X是通常为true的布尔值. 可能性(X)函数等效于可能性 (X,0.9375). 另请参阅: 不太可能(X) .

load_extension(X)
load_extension(X,Y)

load_extension(X,Y)函数使用入口点Y从名为X的共享库文件中加载SQLite扩展 .load_extension()的结果始终为NULL. 如果省略Y,则使用默认入口点名称. 如果扩展未能正确加载或初始化,load_extension()函数将引发异常.

如果扩展尝试修改或删除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,...)

SQL函数printf(FORMAT,...)类似于sqlite3_mprintf() C语言函数和标准C库中的printf()函数. 第一个参数是格式字符串,它指定如何使用从后续参数获取的值构造输出字符串. 如果FORMAT参数丢失或为NULL,则结果为NULL. %n格式将被静默忽略,并且不使用任何参数. %p格式是%X的别名. %z格式可以与%s互换. 如果参数列表中的参数太少,则假定缺少的参数具有NULL值,对于数字格式,它将转换为0或0.0;对于%s,它将转换为空字符串. 有关其他信息,请参见内置的printf()文档.

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)

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)

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)将偏移量返回到表记录.

The sqlite_offset(X) SQL function is only available if SQLite is built using the -DSQLITE_ENABLE_OFFSET_SQL_FUNC compile-time option.

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)

substr(X,Y,Z)函数返回输入字符串X的子字符串,该子字符串以第Y个字符开头,长度为Z个字符. 如果省略Z,则substr(X,Y)返回从字符串X的第Y个开始的所有字符. X的最左字符是数字1.如果Y为负,则通过从右而不是从左开始计数来找到子字符串的第一个字符. 如果Z为负,则返回第Y个字符之前的abs(Z)字符. 如果X是字符串,则字符索引是指实际的UTF-8字符. 如果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