SQLite 字符串函数:REPLACE、SUBSTR、TRIM、ROUND
SQLite 默认配备了内置函数列表 SQLite 库。您还可以使用C语言添加一些其他自定义函数来扩展核心功能。
请注意,对于以下所有示例,您必须运行 sqlite3.exe 并打开与示例数据库的连接,如下所示:
步骤1) 在此步骤中,
- 打开“我的电脑”并导航到以下目录“目录:\sqlite“ 接着
- 打开 ”sqlite3.exe“:
步骤2) 打开数据库“教程SampleDB.db”通过以下命令:
现在您可以运行任何 询问 并尝试以下部分中使用的任何查询。
查找字符串的长度 SQLite
要查找字符串的长度,请使用 LENGTH(X),其中 X 是字符串值。如果 X 为空值,则长度函数将返回空值。
您还可以将长度函数与数值一起使用来获取数值的长度。
计费示例:
在下面的例子中,我们将尝试使用以下值的 LENGTH 函数语法:
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
这会给你:
执行结果如下:
- LENGTH('A string') 返回字符串“A string”的长度 8。
- LENGTH(NULL) 返回空值。
- LENGTH(20) 返回 2,因为 20 是 2 个长度。
- LENGTH(20.5) 返回 4;浮点“。”计为一个字符,因此您将有四个字符 - 3 个字符是数字的长度。再加上一个浮点“。”的字符。
使用 UPPER 函数和 LOWER 函数更改大小写
UPPER(X) 将返回相同的 x 字符串,但它将以大写字母表示所有字符串字符。
LOWER(X) 将返回相同的 x 字符串,但它将以小写字符表示所有字符串字符。
如果向 UPPER 和 LOWER 传递空值,它们将返回空值。
如果将数值传递给 UPPER 或 LOWER,它们都将返回精确的数值。
计费示例:
SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);
这会给你:
执行结果如下:
- UPPER('a string') 返回字符串“一个字符串” 大写字母表示 “字符串“。
- LOWER('A STRING') 返回字符串“字符串”小写字母表示“一个字符串“。
- UPPER(20)、LOWER(20) 返回相同的数字,因为它们对数字没有任何影响。
- UPPER(NULL)、LOWER(NULL) 返回 null 因为我们向它们传递了一个 null 值。
SQLite SUBSTR 函数
SUBSTR 函数返回从特定位置开始的特定数量的字符串。您可以将三个操作数传递给该函数,如下所示“SUBSTR(X,Y,Z)”如下:
- X 是要解析的字符串文字或字符串列。您可以传递文字值(静态值)或列名,在这种情况下,将从列的值中读取该值。
- Y 是从其开始减去字符串的起始位置。
- Z 是从特定位置 Y 开始解析的字符数。此数字是可选的,您可以忽略它,在这种情况下, SQLite 将从位置 Y 开始减去字符串以告诉字符串的结尾。
计费示例:
在以下查询中,我们将使用 SUBSTR 函数从学生姓名的第二个字符开始获取 4 个字符:
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
这会给你:
- SUBSTR(学生姓名, 2, 4) 对字符串“进行子串处理学生姓名”,从第二个字符开始,并返回接下来的 4 个字符。
- 然而,在函数中 SUBSTR(学生姓名, 2) 我们没有指定要返回的字符数,这就是为什么 SQLite 返回“学生姓名”从第二个位置开始。
使用以下方法更改字符串的部分内容 SQLite 替换功能
REPLACE 用于将出现在另一个字符串上的每个字符串替换为一个字符串。
REPLACE(X, Y, Z) – X 是输入字符串文字或列。Y 是要用字符串 Z 替换的字符串。请注意,它将用 Z 替换所有出现的字符串 Y,而不仅仅是一次。
计费示例:
在以下查询中,我们将替换所有出现的字符串“xx”替换为字符串“SQLite“:
SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');
这会给你
- replace 函数将所有字符串“xx”替换为字符串“SQLite“。
- 因此输出将是 “SQLite 非常轻便, SQLite 很容易学”。
使用 SQLite TRIM功能
TRIM 删除字符串开头或结尾的空格。它不会删除字符串中间的任何空格,只会删除开头或结尾的空格。
计费示例:
在下面的查询中,我们将使用 TRIM 函数删除字符串开头和结尾的空格。
注意,连接运算符“||”用于在字符串末尾添加一个额外的“;”。以显示黑色窗口中的空格已被删除。
SELECT TRIM(' SQLite is easy to learn ') || ';';
这会给你:
- 请注意如何从字符串的开头和结尾删除空格,并在末尾用“;”替换。
使用以下方法读取绝对值 SQLite ABS功能
ABS 函数返回数值的绝对值。绝对值是没有任何正号或负号的数值。ABS(X) 根据 X 的值返回一个值,如下所示:
- 如果 X 是数值,则为 X 的绝对值。
- 如果 X 为空值,则为 NULL 值。
- 如果 X 是字符串,则值为“0.0”。
计费示例:
在以下查询中,我们将尝试使用 ABS 函数获取字符串、数字和空值的绝对值:
SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);
这会给你:
测试结果如下:
- ABS(-2)、ABS(+2) 返回 2,因为 2 是“-2”和“+2”的绝对值。
- ABS('a string') 返回“0.0”,因为您传递的是字符串值而不是数字值。
- ABS(null) 返回 null,因为您为其传递了一个 null 值。
使用 ROUND 函数对数值进行舍入 SQLite
十进制数就是数字前面带有浮点“.”的数,例如“20.5”、“8.65”。浮点数左边的部分称为整数部分,浮点数右边的部分称为小数部分。
整数是不含浮点数的数字。例如,“20”、“8”。
ROUND(X) 将小数值或 X 列仅转换为整数。将返回小数点左边的整数部分,并删除小数点右边的所有数字。
计费示例:
在以下查询中,我们将尝试使用不同选项的 ROUND 函数:
SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');
这会给你:
结果如下:
- ROUND(12.4354354) – 返回值“12”,因为您没有指定位数。因此, SQLite 删除所有小数部分。
- ROUND(12.4354354, 2) — 返回值“12.44”,因为您仅指定要四舍五入的 2 位数字,即小数点右边的两位数字。
- ROUND(NULL) – 返回 null,因为您向它传递了一个 null 值。
- ROUND('a string') – 返回值“0.0”,因为您向它传递了一个字符串值。
使用 TYPEOF 函数查找表达式的数据类型
如果您想找出列或文字值的类型,可以使用函数 TYPEOF 来实现。
TYPEOF(X) 函数,顾名思义,返回表达式 X 的数据类型。它返回一个字符串值,表示 X 的数据类型。它根据数据类型返回值,无论是“NULL”值、实数、文本、整数……等等。
计费示例:
在以下查询中,我们将尝试使用不同类型的文字值的 TYPEOF 函数:
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
这会给你:
返回结果如下:
- TYPEOF(null) – 返回 null,因为您向它传递了一个 null 值。
- TYPEOF(12) – 返回一个整数,因为 12 是一个整数。
- TYPEOF(12.5) — 返回 REAL,因为 12.5 是一个实数。
- TYPEOF('a string') – 返回文本,因为“a string”是文本。
查找最后插入的记录 SQLite 最后插入行号
SQLite 为所有表中的所有行分配一个整数键 (Id)。此数字用于唯一标识这些行。
在表中插入新行时, SQLite 将为 rowid 分配一个唯一值。
如果表仅在一个列上声明了主键,并且该列的数据类型为 INTEGER,则该列值将用作 rowid。
LAST_INSERT_ROWID() 函数返回数据库中任意表中最后插入行的 ROW_ID。请注意,它不接受任何操作数。
计费示例:
在下面的例子中,我们将运行函数 LAST_INSERT_ROWID(),如下所示:
SELECT LAST_INSERT_ROWID();
这会给你:
- LAST_INSERT_ROWID() 返回 0,因为当前数据库连接中没有向任何表中插入行。
现在,让我们插入一个新的学生,并在插入语句后再次运行函数 LAST_INSERT_ROWID(),如下所示:
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
这会给你:
- 在我们插入一个 ID 为 11 的新学生后,LAST_INSERT_ROWID() 将返回最后插入的行 ID 为 11。
获取你的版本 SQLite 图书馆
要获取您的版本 SQLite 库,您必须调用 SQLITE_VERSION() 函数。
计费示例:
让我们看看是什么版本的 SQLite 我们通过运行以下命令来使用:
SELECT SQLITE_VERSION();
这会给你:
SQLITE_VERSION() 返回 3.9.2,这是 SQLite 我们正在使用。
创建用户定义函数和聚合用户定义函数
对于某些用户来说, SQLite 核心功能有限。他们可能需要添加自定义功能来满足自己的需求。
SQLite 不支持创建用户定义函数。与其他数据库管理系统不同,您无法在 SQLite 直。
但是,您可以使用 C#、C、PHP 或 C++ 并将该函数附加到核心 SQLite 中的功能 SQLite 图书馆本身,使用“sqlite3_create_函数”函数。然后您可以在数据库中重复使用它们。
计费示例:
在以下示例中,我们将使用以下方法创建用户定义函数 C# 编程语言并将其添加到 SQLite 职能:
[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)] public class DoubleValue: SQLiteFunction { public override object Invoke(object[] args) { return args[0] * 2; } }
此代码片段写在 C#编程语言;它使用 C# 代码创建一个 C# 函数。
函数名称将是“Double价值观“它接受一个参数并返回其乘以 2 的值。
请注意,C# 自动将此函数添加到 SQLite。您只需编译并运行此代码。然后 C# 会将同名函数添加到 SQLite 函数。然后您可以在 SQLite.
同样的方式使用 C#、C、PHP 或 C++,您还可以创建聚合用户定义函数。这些函数用于扩展 SQLite 并使用它们来创建自定义聚合函数。
总结
- SQLite 提供了一套全面的内置函数,使处理数据库表和列变得简单,正如我们所见。您可以在 SQL 查询中的任何表达式中将这些函数用于列以及文字值。
- 您还可以将长度函数与数值一起使用来获取数值的长度。
- 如果向 UPPER 和 LOWER 传递空值,它们将返回空值。
- SUBSTR 函数返回从特定位置开始的特定数量的字符串。
- REPLACE 用于将出现在另一个字符串上的每个字符串替换为一个字符串。
- TRIM 从字符串的开头或结尾删除空格。
- ABS 函数返回数值的绝对值。
- ROUND(X) 将小数值或 X 列仅转换为整数。
- TYPEOF(X) 函数,顾名思义,返回表达式 X 的数据类型。
- LAST_INSERT_ROWID() 函数返回数据库中任何表中最后一行插入的 ROW_ID。