SQLite 内置标量函数
abs(X)
返回数值参数 X 的绝对值。
如果 X 为 null,则返回null。 如果 X 是无法转换为数值的字符串或blob,则返回 0.0。 如果 X 是整数 -9223372036854775808,将引发整数溢出错误。
示例
Select abs(-1.23) AS "绝对值"
返回结果
绝对值 |
---|
1.23 |
changes()
返回最近完成的 INSERT、DELETE 或 UPDATE 语句更改、插入或删除的数据库行数,不包括较低级别触发器中的语句。
示例
--创建测试表
create table tCeShi(ID INTEGER, Name TEXT(50));
--插入单条数据
insert into tCeShi values(1, 'a');
--返回 1
select changes();
--批量插入数据
insert into tCeShi values(2, 'b'), (3, 'c'), (4, 'd'), (5, 'e');
--返回 4
select changes();
--删除数据
delete from tCeShi;
--返回 5
select changes();
--删除测试表
drop table tceshi;
char(X1,X2,...,XN)
返回分别由整数 X1 到 XN 的 unicode 编码组成的字符串。
示例
Select char(49, 65, 97) AS "组成字符串"
返回结果
组成字符串 |
---|
1Aa |
coalesce(X,Y,...) ifnull(X,Y)
返回其第一个非 null 的参数,如果所有参数均为 null,则返回 null。
ifnull()
函数等效于具有两个参数的coalesce()
,相当于SQLServer的ISNULL
。
示例
--创建测试表
create table tCeShi(ID INTEGER, Name TEXT(50));
--插入测试数据
insert into tCeShi values(1, 'a'), (2, null);
--查询
select ID, ifnull(Name, '空值') AS Name_ from tCeShi;
--或
select ID, coalesce(Name, '空值') AS Name_ from tCeShi;
--删除测试表
drop table tceshi;
返回结果
ID | Name_ |
---|---|
1 | a |
2 | 空值 |
format(FORMAT,...) printf(FORMAT,...)
格式化字符串。第一个参数是一个格式字符串,它指定如何使用从后续参数中获取的值来构造输出字符串。
printf()
是format()
的别名。函数最初命名为printf()
。 但后来为了与其他数据库引擎兼容,该名称被更改为format()
。 原始名称printf()
保留为别名,以免破坏任何遗留代码。
示例
Select printf('%.2f', 12.345) AS "格式化2位小数"
返回结果
格式化2位小数 |
---|
12.35 |
glob(X,Y)
等价于表达式 Y GLOB X
。
相对于GLOB运算符,
glob()
函数中的 X 和 Y 参数是相反的。 Y 是字符串,X 是模式。
hex(X)
返回参数解释为blob内容的大写十六进制的字符串。
如果参数 X 是整数或浮点数,首先转换为 UTF8 文本表示,然后将该文本解释为blob。
示例
Select hex('测试') AS "blob内容", hex(123) AS "数字转换后blob内容"
返回结果
blob内容 | 数字转换后blob内容 |
---|---|
E6B58BE8AF95 | 313233 |
iif(X,Y,Z)
如果 X 为真,则返回值 Y,否则返回值 Z。
iif()
函数在逻辑上等价于CASE表达式。
instr(X,Y)
查找字符串 X 中第一次出现的字符串 Y 的位置索引,如果在 X 中找不到 Y,则返回 0。
如果 X 和 Y 都是 blob,则返回第一次出现 Y 的字节位置。
如果 X 和 Y 都是非 null 并且是不是 blob,则两者都被解释为字符串。
如果 X 或 Y 为 null,则返回 null。
示例
Select instr('测试字符串内容', '字符') AS "字符位置"
返回结果
字符位置 |
---|
3 |
last_insert_rowid()
返回数据库连接最后一行插入的ROWID
。
length(X)
返回 X 中第一个 NUL 字符之前的字符长度。由于字符串通常不包含 NUL 字符,因此通常会返回字符串中的字符总长度。
如果 X 为 blob,则返回字节数。
如果 X 为 null,则返回 null。
如果 X 为 数字,则返回 X 的字符串表示形式的长度。
对于字符串,字符长度始终与 UTF-16 字符串的字节长度不同,如果字符串包含多字节字符,则字符长度可能与 UTF-8 字符串的字节长度不同。
示例
Select length('测试字符串内容') AS "字符串长度"
返回结果
字符串长度 |
---|
7 |
like(X,Y) like(X,Y,Z)
等价于表达式 Y LIKE X [ESCAPE Z]
。
如果存在可选的ESCAPE子句,则使用三个参数调用
like()
函数。 否则,只使用两个参数调用它。相对于LIKE运算符,
like()
函数中的 X 和 Y 参数是相反的。 Y 是字符串,X 是模式。
load_extension(X) load_extension(X,Y)
lower(X)
把字符串 X 中所有 ASCII 字符都转换为小写。
示例
Select lower('ABCabc') AS "转小写"
返回结果
转小写 |
---|
abcabc |
ltrim(X) ltrim(X,Y)
从字符串 X 的左侧删除 Y 中出现的字符。
如果省略 Y 参数,
ltrim(X)
将从 X 的左侧删除空格。
示例
Select ltrim(' abc') AS "删除左侧空格", ltrim('abbcdef', 'ab') AS "删除左侧字符"
返回结果
删除左侧空格 | 删除左侧字符 |
---|---|
abc | cdef |
max(X,Y,...)
返回具有最大值的参数,如果任何参数为 null,则返回 null。
当
max()
具有2个或更多参数时,作为标量函数,只有一个参数时,则作为聚合函数。
min(X,Y,...)
返回具有最小值的参数。
当
min()
具有2个或更多参数时,作为标量函数,只有一个参数时,则作为聚合函数。
nullif(X,Y)
如果参数不同,则返回第一个参数,如果参数相同,则返回 null。
示例
Select nullif(1, '1') AS "参数不同", nullif(1, 1) AS "参数相同"
返回结果
参数不同 | 参数相同 |
---|---|
1 | null |
quote(X)
返回SQL文字的文本(字符串被单引号包围,内部引号根据需要进行转义)。
如果 X 为 blob,blob被编码为十六进制文字。
包含 NUL 字符的字符串不能表示为SQL文字的文本,因此返回的SQL文字的文本在第一个 NUL 之前。
示例
数据
Code |
---|
abc |
'_' |
查询语句
Select Code, quote(Code) Code_ from tCeShi
返回结果
Code | Code_ | |
---|---|---|
'abc' | 'abc' | |
'''_''' | '''_''' |
random()
返回一个介于 -9223372036854775808 和 +9223372036854775807 之间的伪随机整数。
示例
Select random() AS "随机数", abs(random() % 100) AS "100以内随机数"
返回结果
随机数 | 100以内随机数 |
---|---|
7094776304988828499 | 89 |
randomblob(N)
返回包含 N 个伪随机字节的blob。
如果 N 小于 1,则返回一个 1 字节的随机blob。
可以使用
hex (randomlob(16))
生成全局唯一标识符。
示例
select hex(randomblob(16)) AS "唯一标识符"
返回结果
唯一标识符 |
---|
05C2B353FF0A1F6DC0E6BC7646D72805 |
replace(X,Y,Z)
把字符串 X 中出现的字符串 Y 替换为字符串 Z 。
如果 Y 是空字符串,则返回 X 不变。
如果 Z 不是字符串,则在处理之前将其转换为 UTF-8 字符串。
示例
select replace('abc-abc', 'abc', '字符') AS "替换后字符"
返回结果
替换后字符 |
---|
字符-字符 |
round(X) round(X,Y)
将浮点值 X 四舍五入到小数点右侧的 Y 位。
如果 Y 参数被省略或为负,则认为是0。
示例
select round(12.345) "取整", round(12.345, 2) AS "保留2位"
返回结果
取整 | 保留2位 |
---|---|
12 | 12.35 |
rtrim(X) rtrim(X,Y)
从字符串 X 的右侧删除 Y 中出现的字符。
如果省略 Y 参数,
rtrim(X)
将从 X 的右侧删除空格。
示例
Select rtrim('abc ') AS "删除右侧空格", rtrim('abcdee', 'de') AS "删除右侧字符"
返回结果
删除右侧空格 | 删除右侧字符 |
---|---|
abc | abc |
sign(X)
返回数字 X 的符号。
如果参数 X 为 null,或者不能无损转换为数字,则
sign(X)
返回 null。
示例
数据
Price |
---|
12.3 |
-3.5 |
0 |
查询语句
select Price, sign(Price) AS "函数值", case sign(Price) when 1 then '正数' when -1 then '负数' else '零' end AS "正负数" from tCeShi
返回结果
Price | 函数值 | 正负数 |
---|---|---|
12.3 | 1 | 正数 |
-3.5 | -1 | 负数 |
0 | 0 | 零 |
soundex(X)
返回字符串 X 的 soundex 编码。
如果参数为 null 或不包含 ASCII 字母字符,则返回字符串
?000
。
示例
Select soundex('sum') AS "发音编码1", soundex('sam') AS "发音编码2"
返回结果
发音编码1 | 发音编码2 |
---|---|
S500 | S500 |
sqlite_source_id()
返回构建SQLite库源代码的特定版本标识字符串。
sqlite_version()
返回正在运行的SQLite库的版本字符串。
substr(X,Y,Z) substr(X,Y) substring(X,Y,Z) substring(X,Y)
返回字符串 X 中从第 Y 个字符开始,长度为 Z 个字符的子字符串。
如果省略 Z 参数,则
substr(X,Y)
返回字符串 X 中从第 Y 个字符开始的所有字符。如果 Y 是正数,从左侧计数来找子字符串,X 最左边字符的是索引1。如果 Y 是负数,从右侧计数来找子字符串,X 最右边字符的是索引-1。
如果 Z 是正数,返回第 Y 个字符之后的字符。如果 Z 为负数,返回第 Y 个字符之前的字符。
如果 X 是字符串,索引指的是UTF-8 字符。 如果 X 是 blob,则索引指的是字节。
从SQLite版本 3.34 开始,
substring()
是substr()
的别名。
示例
Select substr('123456789', 5, 3) "从左侧取", substr('123456789', -5, 3) "从右侧取", substr('123456789', 5, -3) AS "向前取"
返回结果
从左侧取 | 从右侧取 | 向前取 |
---|---|---|
567 | 567 | 234 |
total_changes()
返回自打开当前数据库连接以来由 INSERT、UPDATE 或 DELETE 语句更改、插入或删除的数据库行数。
trim(X) trim(X,Y)
从字符串 X 的两端删除 Y 中出现的字符。
如果省略 Y 参数,
trim(X)
将从 X 的两端删除空格。
示例
Select trim(' abc ') AS "删除两端空格", trim('abbcdefa', 'ab') AS "删除两端字符"
返回结果
删除两端空格 | 删除两端字符 |
---|---|
abc | cdef |
typeof(X)
返回表达式 X 的数据类型字符串(null
、integer
、real
、text
或blob
)。
示例
Select typeof('2' + 2) AS "表达式数据类型"
返回结果
表达式数据类型 |
---|
integer |
unicode(X)
返回字符串 X 的第一个字符的 unicode 编码。
示例
Select unicode('A') AS "A的编码", unicode('abc') AS "a的编码"
返回结果
A的编码 | a的编码 |
---|---|
65 | 97 |
upper(X)
把字符串 X 中所有 ASCII 字符都转换为大写。
示例
Select upper('ABCabc') AS "转大写"
返回结果
转大写 |
---|
ABCABC |
zeroblob(N)
返回由 N 个字节的 0x00
组成的 blob。
参考
Built-In Scalar SQL Functions (sqlite.org)
标签:返回,字符,SQLite,内置,示例,字符串,参数,标量,null From: https://www.cnblogs.com/txgh/p/17005535.html