当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/99437.html

相关文章:

  • JVM Java类加载 isInstance instanceof 的区别
  • 洛谷题单1-P5703 【深基2.例5】苹果采购-python-流程图重构
  • JDBC的详细使用
  • 【零基础入门unity游戏开发——2D篇】2D物理关节 —— Joint2D相关组件
  • [Lc4_dfs] 解数独 | 单词搜索
  • PyQt6实例_批量下载pdf工具_界面开发
  • MDK中结构体的对齐、位域、配合联合体等用法说明
  • C#:第一性原理拆解属性(property)
  • 分享一个Pyside6实现web数据展示界面的效果图
  • Springboot学习笔记3.20
  • SmolDocling文档处理模型介绍
  • Python 循环全解析:从语法到实战的进阶之路
  • 人工智能之数学基础:矩阵的相似变换的本质是什么?
  • DeepSeek网络拓扑设计解密:如何支撑千卡级AI训练的高效通信?
  • 缓存 vs 分布式锁:高并发场景下的并发控制之道
  • 【C++】类和对象(二)默认成员函数之拷贝构造函数、运算符重载、赋值运算符重载
  • <tauri><rust><GUI>基于rust和tauri,实现一个大寰电爪PGHL(串口设备)定制化控制程序
  • java pom文件加入这个可以将打包好的jar 双击运行
  • 积分赛——光敏控制多功系统设计
  • 区块链赋能,为木材货场 “智” 造未来
  • vue在线录音系统
  • Redis延时队列在订单超时未报到场景的应用补充说明
  • 利用 VSCode 配置提升 vibe coding 开发效率
  • 找python大数据就业,我应该学习Java哪些知识
  • dav_pg8_vacuum
  • c#的.Net Framework 的console 项目找不到System.Window.Forms 引用
  • VMware中新建Ubuntu虚拟机系统,并安装Anaconda
  • 1--当「穷举」成为艺术:CTF暴力破解漏洞技术从入门到入刑指南(知识点讲解版)
  • Android Architecture Components 深入解析
  • 【力扣刷题|第十七天】0-1 背包 完全背包