【MySQL基础】函数之字符串函数详解

字符串处理是数据库操作中最常见的需求之一,SQL提供了丰富的字符串函数来满足各种文本处理需求。本文将详细介绍SQL中的字符串函数,包括基础函数和高级函数,并提供使用示例。

1 基础字符串函数

1.1 CONCAT() : 字符串连接

功能:将两个或多个字符串连接成一个字符串

mysql> select concat('hello', ' ', 'world'); 
+-------------------------------+
| concat('hello', ' ', 'world') |
+-------------------------------+
| hello world                   |
+-------------------------------+
1 row in set (0.01 sec)

1.2 UPPER()和LOWER() :大小写转换

功能:转换字符串的大小写

mysql> select upper('mysql');  
+----------------+
| upper('mysql') |
+----------------+
| MYSQL          |
+----------------+
1 row in set (0.00 sec)

mysql> select lower('MYSQL'); 
+----------------+
| lower('MYSQL') |
+----------------+
| mysql          |
+----------------+
1 row in set (0.00 sec)

mysql> 

1.3 SUBSTRING() :提取子字符串

功能:从字符串中提取指定位置的子字符串

-- 从第2个字符开始取3个字符
mysql> select substring('database', 2, 3);  
+-----------------------------+
| substring('database', 2, 3) |
+-----------------------------+
| ata                         |
+-----------------------------+
1 row in set (0.01 sec)

mysql> 

1.4 LENGTH() :字符串长度

功能:返回字符串的字符长度

select length('text');  -- 返回 4
select product_name from products where length(product_name) > 20;

1.5 TRIM() :去除空格

功能:去除字符串首尾的空格

mysql> select trim('  mysql  '); 
+-------------------+
| trim('  mysql  ') |
+-------------------+
| mysql             |
+-------------------+
1 row in set (0.00 sec)

-- 去除开头空格
mysql> select trim(leading from '  mysql'); 
+------------------------------+
| trim(leading from '  mysql') |
+------------------------------+
| mysql                        |
+------------------------------+
1 row in set (0.01 sec)

-- 去除结尾空格
mysql> select trim(trailing from 'mysql  '); 
+-------------------------------+
| trim(trailing from 'mysql  ') |
+-------------------------------+
| mysql                         |
+-------------------------------+
1 row in set (0.00 sec)

mysql>

2 扩展字符串函数

2.1 REPLACE() -:字符串替换

mysql> select replace('hello world', 'world', 'mysql'); 
+------------------------------------------+
| replace('hello world', 'world', 'mysql') |
+------------------------------------------+
| hello mysql                              |
+------------------------------------------+
1 row in set (0.00 sec)

mysql>

2.2 LEFT()和RIGHT() :左右截取

功能:从字符串左侧或右侧截取指定长度的子串

-- 从左侧截取4位
mysql> select left('database', 4); 
+---------------------+
| left('database', 4) |
+---------------------+
| data                |
+---------------------+
1 row in set (0.00 sec)

-- 从右侧截取2位
mysql> select right('2025-03-28', 2); 
+------------------------+
| right('2025-03-28', 2) |
+------------------------+
| 28                     |
+------------------------+
1 row in set (0.00 sec)

mysql> 

2.3 POSITION() :查找子串位置

功能:返回子字符串在字符串中的位置

mysql> select position('m' in 'mysql'); 
+--------------------------+
| position('m' in 'mysql') |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.01 sec)

mysql> 

2.4 REPEAT() :重复字符串

功能:将字符串重复指定次数

mysql> select repeat('*', 5);
+----------------+
| repeat('*', 5) |
+----------------+
| *****          |
+----------------+
1 row in set (0.00 sec)

mysql> 

2.5 REVERSE() :字符串反转

功能:反转字符串中的字符顺序

mysql> select reverse('mysql'); 
+------------------+
| reverse('mysql') |
+------------------+
| lqsym            |
+------------------+
1 row in set (0.00 sec)

mysql> 

2.6 LPAD()和RPAD():字符串填充

功能:在字符串左侧或右侧填充指定字符到指定长度

-- 在当前字符串左侧填充指定内容到指定长度
mysql> select lpad('mysql', 10, '.'); 
+------------------------+
| lpad('mysql', 10, '.') |
+------------------------+
| .....mysql             |
+------------------------+
1 row in set (0.00 sec)

-- 在当前字符串右侧填充指定内容到指定长度
mysql> select rpad('mysql', 10, '.');
+------------------------+
| rpad('mysql', 10, '.') |
+------------------------+
| mysql.....             |
+------------------------+
1 row in set (0.00 sec)

mysql> 

3 总结

SQL提供了丰富的字符串处理函数,掌握这些函数可以高效地解决各种文本处理需求。从基础的连接、截取、大小写转换,合理运用这些函数可以大大简化数据处理流程。在实际应用中,应根据具体需求选择合适的函数,并注意性能影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT成长日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值