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

MariaDB SUBSTRING_INDEX() 函数用来从字符串中提取子字符串,以指定的分隔符为界限。

发布于

MariaDB SUBSTRING_INDEX() 函数用来从字符串中提取子字符串,以指定的分隔符为界限。它常用于从字符串中提取多级路径名称、电话号码区号或者 URL 中的各部分等。

语法

MairaDB SUBSTRING_INDEX() 函数的语法如下:

SUBSTRING_INDEX(str, delim, count)
  • str: 要进行子字符串提取的源字符串。
  • delim: 分隔符,在 str 中作为子字符串提取的界限。
  • count: 一个正数返回第 count 个分隔符前的子字符串,一个负数返回从右边开始的第 -count 个分隔符之后的子字符串。

该函数返回从 str 中提取的子字符串。

实例

从左侧获取第 N 个子字符串

此示例展示了如何从左侧获取第 N 个子字符串。

SELECT SUBSTRING_INDEX('www.example.com', '.', 2);

以下是该语句的输出:

+--------------------------------------------+
| SUBSTRING_INDEX('www.example.com', '.', 2) |
+--------------------------------------------+
| www.example                                |
+--------------------------------------------+

从右侧获取第 N 个子字符串

此示例展示了如何从右侧获取第 N 个子字符串。

SELECT SUBSTRING_INDEX('www.example.com', '.', -2);

以下是该语句的输出:

+---------------------------------------------+
| SUBSTRING_INDEX('www.example.com', '.', -2) |
+---------------------------------------------+
| example.com                                 |
+---------------------------------------------+

获取文件扩展名

此示例展示了如何使用 SUBSTRING_INDEX() 提取文件扩展名。

SELECT SUBSTRING_INDEX('example.tar.gz', '.', -1) AS extension;

以下是该语句的输出:

+-----------+
| extension |
+-----------+
| gz        |
+-----------+

获取地址省市区

此示例展示了如何使用 SUBSTRING_INDEX() 从地址字符串中提取省市区。

DROP TABLE IF EXISTS users;
CREATE TABLE users (id INT, address VARCHAR(100));
INSERT INTO users VALUES
  (1, '北京市海淀区中关村南大街9号'),
  (2, '上海市静安区南京西路789号'),
  (3, '广州市天河区天河北路233号');

SELECT id,
  SUBSTRING_INDEX(address, '市', 1) AS province,
  SUBSTRING_INDEX(SUBSTRING_INDEX(address, '市', -1), '区', 1) AS city,
  SUBSTRING_INDEX(address, '区', -1) AS district
FROM users;

以下是该语句的输出:

+------+----------+------+-----------------+
| id   | province | city | district        |
+------+----------+------+-----------------+
|    1 | 北京     | 海淀 | 中关村南大街9号 |
|    2 | 上海     | 静安 | 南京西路789号   |
|    3 | 广州     | 天河 | 天河北路233号   |
+------+----------+------+-----------------+

相关函数

以下是几个与 MairaDB SUBSTRING_INDEX() 相关的函数:

  • MariaDB SUBSTR() 函数用来从字符串中提取子字符串,以位置和长度为界限。
  • MariaDB LOCATE() 函数用来查找子字符串在字符串中的位置。
  • MariaDB INSTR() 函数也用来查找子字符串在字符串中的位置,但是参数顺序与 LOCATE() 不同。
  • MariaDB REPLACE() 函数用来替换字符串中的子字符串。

结论

MariaDB SUBSTRING_INDEX() 函数是处理带分隔符的字符串数据的利器,可以轻松地从字符串中提取出需要的子字符串。与相关的字符串函数联合使用,能让字符串处理更加高效、灵活。在许多场景都能发挥作用,如 URL 解析、数据规范化、文本切分等,为数据处理提供了强有力的支持。在日常开发中,合理利用这些函数可以大大减少代码量,提高工作效率。