MySQL切割字符串函数

1. 简介
在MySQL数据库中,有时候我们需要对字符串进行切割或者提取部分内容。MySQL提供了一些内置的字符串函数来满足这些需求。本文将详细介绍MySQL中常用的字符串切割函数及其使用方式。
2. SUBSTRING()函数
2.1 语法
SUBSTRING()函数用于从一个字符串中提取指定位置的子字符串。
SUBSTRING(str, start, length)
str:要提取子字符串的源字符串。start:指定子字符串的起始位置(从1开始计数)。length:可选参数,指定子字符串的长度。如果不指定该参数,则提取从起始位置开始到字符串末尾的所有字符。
2.2 示例
假设有如下的表格,名为employees。
| id | name |
|---|---|
| 1 | John Smith |
| 2 | Mary Johnson |
| 3 | Brian Adams |
我们可以使用SUBSTRING()函数从name字段中提取出姓氏。
SELECT SUBSTRING(name, 1, LOCATE(' ', name) - 1) as last_name
FROM employees;
运行结果如下:
+-----------+
| last_name |
+-----------+
| John |
| Mary |
| Brian |
+-----------+
3. LEFT()函数
3.1 语法
LEFT()函数用于从一个字符串的开头提取指定长度的子字符串。
LEFT(str, length)
str:要提取子字符串的源字符串。length:指定子字符串的长度。
3.2 示例
假设我们有一个表格,名为products,包含产品名称和价格。
| id | name | price |
|---|---|---|
| 1 | Apple iPhone 12 | 999 |
| 2 | Samsung Galaxy S20 | 1099 |
| 3 | Google Pixel 5 | 799 |
我们可以使用LEFT()函数提取产品名称的开头部分。
SELECT LEFT(name, LOCATE(' ', name) - 1) as brand
FROM products;
运行结果如下:
+--------+
| brand |
+--------+
| Apple |
| Samsung|
| Google |
+--------+
4. RIGHT()函数
4.1 语法
RIGHT()函数用于从一个字符串的末尾提取指定长度的子字符串。
RIGHT(str, length)
str:要提取子字符串的源字符串。length:指定子字符串的长度。
4.2 示例
假设我们有一个表格,名为orders,包含订单号和日期。
| id | order_number | date |
|---|---|---|
| 1 | ORD123456789 | 2021-01-01 |
| 2 | ORD987654321 | 2021-02-01 |
| 3 | ORD456789123 | 2021-03-01 |
我们可以使用RIGHT()函数提取订单号的末尾部分。
SELECT RIGHT(order_number, 3) as last_digits
FROM orders;
运行结果如下:
+-------------+
| last_digits |
+-------------+
| 789 |
| 321 |
| 123 |
+-------------+
5. SUBSTRING_INDEX()函数
5.1 语法
SUBSTRING_INDEX()函数用于根据指定的分隔符从一个字符串中提取子字符串的一部分。
SUBSTRING_INDEX(str, delimiter, count)
str:要提取子字符串的源字符串。delimiter:分隔符。count:指定返回的子字符串的部分。
5.2 示例
假设有如下的表格,名为emails。
| id | |
|---|---|
| 1 | johndoe@example.com |
| 2 | marysmith@example.com |
| 3 | brianadams@example.com |
我们可以使用SUBSTRING_INDEX()函数提取出邮箱的域名部分。
SELECT SUBSTRING_INDEX(email, '@', -1) as domain
FROM emails;
运行结果如下:
+------------------+
| domain |
+------------------+
| example.com |
| example.com |
| example.com |
+------------------+
6. REGEXP_SUBSTR()函数
6.1 语法
REGEXP_SUBSTR()函数用于从一个字符串中根据正则表达式提取匹配的子字符串。
REGEXP_SUBSTR(str, pattern)
str:要提取子字符串的源字符串。pattern:正则表达式。
6.2 示例
假设我们有一个表格,名为phone_numbers,包含电话号码和国家代码。
| id | phone_number |
|---|---|
| 1 | +1 1234567890 |
| 2 | +86 987654321 |
| 3 | +44 123456789 |
我们可以使用REGEXP_SUBSTR()函数提取出电话号码的国家代码部分。
SELECT REGEXP_SUBSTR(phone_number, '[+]\\d+') as country_code
FROM phone_numbers;
运行结果如下:
+--------------+
| country_code |
+--------------+
| +1 |
| +86 |
| +44 |
+--------------+
7. 总结
MySQL提供了一系列字符串切割函数,包括SUBSTRING()、LEFT()、RIGHT()、SUBSTRING_INDEX()和REGEXP_SUBSTR()。这些函数可以根据具体的需求,方便地对字符串进行切割和提取子字符串的操作。在实际的数据库应用中,我们可以根据需要选择合适的函数来处理字符串数据。
极客笔记