进阶4:常见函数之字符函数
概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:1、隐藏了实现细节 2、提高代码的重用性
调用:select 函数名(实参列表) 【from 表】;
特点:
①叫什么(函数名)
②干什么(函数功能)
分类:
1、单行函数 如 concat、length、ifnull等
2、分组函数
功能:做统计使用,又称为统计函数、聚合函数、组函数
- 以下如图数据库为例编写案例
常见函数:
一、单行函数
字符函数:
length:获取字节个数(utf-8一个汉字代表3个字节,gbk为2个字节)
concat
substr
instr
trim
upper
lower
lpad
rpad
replace
数学函数:
round
ceil
floor
truncate
mod
日期函数:
now
curdate
curtime
year
month
monthname
day
hour
minute
second
str_to_date
date_format
其他函数:
version
database
user
控制函数
if
case
一、字符函数
1. length 获取参数值的字节个数
SELECT LENGTH('xdr630');
SELECT LENGTH('兮动人630');
这里客户端使用的字符集是utf-8
,一个汉字等于三个字节,所以为12
注意:
- 查看客户端使用的字符集,这里使用的是
utf-8
,一个汉字占三个字节,一个英文占一个字节。 - 如果客户端使用的字符集是
gbk
,那就是一个汉字占两个字节,一个英文占一个字节。
SHOW VARIABLES LIKE '%char%'
2. concat 拼接字符串
- 姓名拼接,中间用下划线连接
SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;
3. upper、lower
SELECT UPPER('xdr630');
SELECT LOWER('MIKE');
示例1:将姓变大写,名变小写,然后拼接
SELECT CONCAT(UPPER(last_name),LOWER(first_name)) 姓名 FROM employees;
4. substr、substring
注意:索引从1开始
(1) 截取从指定索引处后面所有字符
SELECT SUBSTR('李莫愁爱上了陆展元',7) out_put;
(2) 截取从指定索引处指定字符长度的字符
- 这里的第一个参数表示从第一个索引开始,第二个参数表示字符的长度
SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put;
案例1:姓名中首字符大写,其他字符小写然后用_拼接,显示出来
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) out_put
FROM employees;
SELECT LENGTH(TRIM(’ 张翠山 ')) AS out_put;
5. instr 返回子串第一次出现的索引,如果找不到返回0
SELECT INSTR('杨不殷六侠悔爱上了殷六侠','殷六侠') AS out_put;
SELECT INSTR('杨不殷六侠悔爱上了殷六侠','殷八侠') AS out_put;
6. trim 去前后空格
SELECT TRIM(' 张翠山 ') AS out_put;
SELECT LENGTH(TRIM(' 张翠山 ')) AS out_put;
- 去掉前后的a参数
SELECT TRIM('a' FROM 'aaaaaaaaa张aaaaaaaaaaaa翠山aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') AS out_put;
- 两个a表示成双去掉,最后多余了一个a
SELECT TRIM('aa' FROM 'aaaaaaaaa张aaaaaaaaaaaa翠山aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') AS out_put;
7. lpad 用指定的字符实现左填充指定长度
- 用
*
填充左边字符为10个
SELECT LPAD('殷素素',10,'*') AS out_put;
- 如果填充的长度小于字符的长度,返回原字符
SELECT LPAD('殷素素',2,'*') AS out_put;
8. rpad 用指定的字符实现右填充指定长度
SELECT RPAD('殷素素',12,'ab') AS out_put;
9.replace 替换,可以多个替换参数
SELECT REPLACE('周芷若周芷若周芷若周芷若张无忌爱上了周芷若','周芷若','赵敏') AS out_put;