SQLite 字符串函数:REPLACE、SUBSTR、TRIM、ROUND

SQLite 默认配备了内置函数列表 SQLite 库。您还可以使用C语言添加一些其他自定义函数来扩展核心功能。

请注意,对于以下所有示例,您必须运行 sqlite3.exe 并打开与示例数据库的连接,如下所示:

步骤1) 在此步骤中,

  1. 打开“我的电脑”并导航到以下目录“目录:\sqlite“ 接着
  2. 打开 ”sqlite3.exe“:

SQLite 字符串函数

步骤2) 打开数据库“教程SampleDB.db”通过以下命令:

SQLite 字符串函数

现在您可以运行任何 询问 并尝试以下部分中使用的任何查询。

查找字符串的长度 SQLite

要查找字符串的长度,请使用 LENGTH(X),其中 X 是字符串值。如果 X 为空值,则长度函数将返回空值。

您还可以将长度函数与数值一起使用来获取数值的长度。

计费示例:

在下面的例子中,我们将尝试使用以下值的 LENGTH 函数语法:

SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);

这会给你:

查找字符串的长度 SQLite

执行结果如下:

  • 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 和 LOWER 函数示例 SQLite

执行结果如下:

  • 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 函数示例 SQLite

  • 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 函数示例 SQLite

  • replace 函数将所有字符串“xx”替换为字符串“SQLite“。
  • 因此输出将是 “SQLite 非常轻便, SQLite 很容易学”。

使用 SQLite TRIM功能

TRIM 删除字符串开头或结尾的空格。它不会删除字符串中间的任何空格,只会删除开头或结尾的空格。

计费示例:

在下面的查询中,我们将使用 TRIM 函数删除字符串开头和结尾的空格。

注意,连接运算符“||”用于在字符串末尾添加一个额外的“;”。以显示黑色窗口中的空格已被删除。

SELECT TRIM('      SQLite is easy to learn        ') || ';';

这会给你:

TRIM 函数示例 SQLite

  • 请注意如何从字符串的开头和结尾删除空格,并在末尾用“;”替换。

使用以下方法读取绝对值 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 功能示例 SQLite

测试结果如下:

  • 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 函数示例 SQLite

结果如下:

  • ROUND(12.4354354) – 返回值“12”,因为您没有指定位数。因此, SQLite 删除所有小数部分。
  • ROUND(12.4354354, 2) — 返回值“12.44”,因为您仅指定要四舍五入的 2 位数字,即小数点右边的两位数字。
  • ROUND(NU​​LL) – 返回 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 函数示例 SQLite

返回结果如下:

  • 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 函数示例 SQLite

  • LAST_INSERT_ROWID() 返回 0,因为当前数据库连接中没有向任何表中插入行。

现在,让我们插入一个新的学生,并在插入语句后再次运行函数 LAST_INSERT_ROWID(),如下所示:

INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12');
SELECT LAST_INSERT_ROWID();

这会给你:

LAST_INSERT_ROWID 函数示例 SQLite

  • 在我们插入一个 ID 为 11 的新学生后,LAST_INSERT_ROWID() 将返回最后插入的行 ID 为 11。

获取你的版本 SQLite 图书馆

要获取您的版本 SQLite 库,您必须调用 SQLITE_VERSION() 函数。

计费示例:

让我们看看是什么版本的 SQLite 我们通过运行以下命令来使用:

SELECT SQLITE_VERSION();

这会给你:

获取版本的示例 SQLite 图书馆

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。