怎么自己做礼品网站一份电子商务网站建设规划书
函数-1-字符串函数
- 字符串函数
- 函数
- 语法
- 字符串函数的使用
- 字符串函数语法
- 案例演示
- 实战练习
字符串函数
函数
函数是一段可以直接被另一端程序调用的程序或代码
语法
SELECT 函数名(参数名)
大家可能会有那么一点点疑惑, 为什么执行函数还需要加上SELECT语句? 总结一下, 因为SELECT语句是MySQL中执行函数并获取结果的标准方式,它能够方便地与其他SQL操作结合,并以简洁的语法完成各种计算和数据处理任务。
字符串函数的使用
MySQL中内置了很多字符串函数, 常用的几个如下:
| 函数 | 功能 |
|---|---|
| CONCAT(S1, S2, …, Sn) | 字符串拼接, 将 S1, S2, …, Sn 拼接成一个字符串 |
| LOWER(str) | 将字符串 str 全部转为小写 |
| UPPER(str) | 将字符串 str 全部转为大写 |
| LPAD(str, n, pad) | 左填充, 用字符串 pad 对 str 的左边进行填充, 达到 n 个字符串长度 |
| RPAD(str, n, pad) | 右填充, 用字符串 pad 对 str 的右边进行填充, 达到 n 个字符串长度 |
| TRIM(str) | 去掉字符串头部和尾部的空格 |
| SUBSTRING(str, start, len) | 返回字符串 str 从 start 位置起的 len 个长度的字符串 |
字符串函数语法
-
CONCAT函数SELECT CONCAT(参数) -
LOWER函数SELECT LOWER(参数) -
UPPER函数SELECT UPPER(参数) -
LPAD函数SELECT LPAD(参数) -
RPAD 函数
SELECT RPAD(参数) -
TRIM 函数
SELECT TRIM(参数)
案例演示
-
拼接
Hello和World两个字符串select concat('Hello', 'World');

-
将
Hello, World字符串所有字母转换成小写字母select lower('Hello, World');

-
将
Hello, World字符串所有字母转换成大写字母select upper('Hello, World');

-
使用
@符号对字符串Hello, World进行左填充,使其总长度达到20个字符select lpad('Hello, World', 20, '@');

-
使用
@符号对字符串Hello, World进行右填充,使其总长度达到20个字符select rpad('Hello, World', 20, '@');

-
去除字符串
Hello, World首尾的空格select trim(' Hello, World ');

-
从字符串
Hello, World中提取子串,得到llo, Worselect substring('Hello, World', 3, 8);

注意, 此处的起始索引是从
1开始算的, 所以需要注意我们切片的时候的起始索引应该是3, 而不是2
实战练习
首先我们需要准备一下数据, 在 test 库的 emp_info 中更新一下数据, 进行如下替换即可
INSERT INTO emp_info (id, work_no, name, gender, age, id_card, work_address, entry_time)
VALUES (1, '1', '张伟', '男', 28, '11010519950101234X', '北京市海淀区中关村科技园', '2020-03-15'),(2, '2', '李娜', '女', 32, '310115199209076542', '上海市浦东新区张江高科技园区', '2019-07-22'),(3, '3', '王超', '男', 25, '440305199801129876', '深圳市南山区高新科技园', '2021-11-05'),(4, '4', '赵敏', '女', 29, '510107199412258765', '成都市高新区天府软件园', '2020-09-18'),(5, '5', '陈阳', '男', 35, '330106198911034567', '杭州市西湖区云栖小镇', '2018-05-30'),(6, '6', '刘婷', '女', 27, '320506199612127890', '苏州市工业园区人工智能产业园', '2022-02-14'),(7, '7', '杨帆', '男', 31, '420111199211156789', '武汉市东湖新技术开发区', '2019-10-21'),(8, '8', '周雨', '女', 26, '440111199712098765', '广州市天河区智慧城', '2021-08-03'),(9, '9', '吴强', '男', 33, '500106198912312345', '重庆市渝北区仙桃数据谷', '2017-04-12'),(10, '10', '郑琳', '女', 30, '610113199310214567', '西安市高新区软件新城', '2020-01-25');
-
由于业务需求变更, 企业员工的工号, 统一为
5位数, 目前不足5位数的全部在前面补0, 例如: 1 号员工的公号应该为00001这题其实不是很复杂, 但咱可以稍微搞复杂一些, 顺便回顾一下之前的知识点
首先查看一下建表语句, 获取一下各字段信息
desc emp_info;
查看到表结构, 我们需要统一的企业员工的工号字段为
work_no, 类型为varchar(10)再查看一下表内容
select * from emp_info;
这里其实可以发现,
work_no字段都不足5位数, 但是字段类型却为varchar(10), 所以我们可以尝试修改以下表的结构, 将其统一为char(5), 当然只作练习使用, 不适用于生产环境, 生产环境还是得因地制宜, 按照企业的意思进行管理, 这里只做学习!!!修改
work_no字段类型为char(5)alter table emp_infomodify work_no char(5);再次查看表结构以确认修改结果

使用左补全, 补全员工工号字段, 并且更新到表中, 这里其实大家就能明白, 使用函数不一定要带有
SELECTupdate emp_info set work_no=lpad(emp_info.work_no, 5, '0');
