MariaDB SUBSTRING() 函数的基础用法与实例

MariaDB SUBSTRING() 函数用来从一个字符串中提取子字符串。

发布于

MariaDB SUBSTRING() 函数用来从一个字符串中提取子字符串。它可以在需要获取字符串中的一部分时使用,比如从电子邮件地址中提取用户名、从文件路径中提取文件名等场景。

语法

MariaDB SUBSTRING() 函数的语法如下:

SUBSTRING(str, pos, [len])
  • str 是要提取子字符串的源字符串。
  • pos 是子字符串的起始位置,字符串的第一个字符从位置 1 开始。如果 pos 为正值,则从左边开始提取;如果为负值,则从右边开始提取。
  • len 是可选的,指定要返回的字符数。如果省略,则返回从指定位置到字符串末尾的所有字符。

该函数返回从字符串 str 开始的从 pos 开始长度为 len 的子字符串。

实例

从字符串中提取前几个字符

SELECT SUBSTRING('MariaDB Rocks', 1, 7);

以下是该语句的输出:

+----------------------------------+
| SUBSTRING('MariaDB Rocks', 1, 7) |
+----------------------------------+
| MariaDB                          |
+----------------------------------+

本示例从 'MariaDB Rocks' 字符串的第 1 个字符开始,提取长度为 7 的子字符串。

从字符串中提取后几个字符

SELECT SUBSTRING('MariaDB Rocks', -5);

以下是该语句的输出:

+--------------------------------+
| SUBSTRING('MariaDB Rocks', -5) |
+--------------------------------+
| Rocks                          |
+--------------------------------+

本示例从 'MariaDB Rocks' 字符串的倒数第 5 个字符开始,提取到字符串末尾的子字符串。

从字符串中提取中间一段

DROP TABLE IF EXISTS employees;
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);
INSERT INTO employees VALUES
    (1, 'John Doe'),
    (2, 'Jane Smith'),
    (3, 'Michael Johnson');

SELECT id, SUBSTRING(name, 1, 4) AS first_name
FROM employees;

以下是该语句的输出:

+----+------------+
| id | first_name |
+----+------------+
|  1 | John       |
|  2 | Jane       |
|  3 | Mich       |
+----+------------+

本示例从 employees 表中的 name 字段提取前 4 个字符,作为员工的名字的简写。

去除字符串中的前缀和后缀

SELECT
    SUBSTRING('__Hello__', 3, CHAR_LENGTH('__Hello__') - 4) AS no_underscores;

以下是该语句的输出:

+----------------+
| no_underscores |
+----------------+
| Hello          |
+----------------+

本示例从字符串 '__Hello__' 中提取除去前两个和后两个下划线字符的子字符串。

模糊查找文件名

DROP TABLE IF EXISTS files;
CREATE TABLE files (id INT PRIMARY KEY, path VARCHAR(255));
INSERT INTO files VALUES
    (1, '/var/www/html/index.php'),
    (2, '/var/www/logs/error.log'),
    (3, '/etc/my.cnf');

SELECT id, SUBSTRING_INDEX(path, '/', -1) AS filename
FROM files
WHERE SUBSTRING_INDEX(path, '/', -1) LIKE '%.php';

以下是该语句的输出:

+----+-----------+
| id | filename  |
+----+-----------+
|  1 | index.php |
+----+-----------+

本示例从 files 表中查找文件路径,并提取最后一部分文件名。SUBSTRING_INDEX 函数用于分隔路径中的目录与文件名,查询条件则用于筛选出 .php 结尾的文件。

相关函数

以下是几个与 MariaDB SUBSTRING() 相关的几个函数:

  • MariaDB SUBSTRING_INDEX() 函数用来从字符串中返回一个子字符串,该子字符串从字符串开始处,直到第 n 次出现指定的分隔符为止。
  • MariaDB REPLACE() 函数用于替换字符串中的指定字符或子字符串。
  • MariaDB CONCAT() 函数用来连接两个或多个字符串。
  • MariaDB TRIM() 函数用来去除字符串两端的指定字符。

结论

MariaDB SUBSTRING() 函数是一个非常有用的字符串处理函数,可以在许多场景下使用。通过合理利用该函数及其相关函数,可以高效地提取、替换和操作字符串数据。在编写 SQL 查询或存储过程时,掌握这些字符串函数无疑会提高开发效率。