概念:函数类似于java的方法(将实现某个功能的逻辑语句封装到方法中,对外暴露一个公开的名字,就是方法名)。
好处:
1.隐藏类具体功能的实现细节
2.提高代码的重用性
调用:
SELECT 函数名(实参列表) (实参和形参的 个数、类型 必须一致)
FROM 表(根据需要:函数的参数用到表中的字段)
过程:调用该函数,把函数的逻辑语句执行完,将它的返回值显示出来。
分类:
1.单行函数:处理数据使用。传入一个参数,处理完后,最终会有一个返回值
如:CONCAT(str1,str2,...)、LENGTH(str)、IFNULL(expr1,expr2)等
2.分组函数:简称组函数
功能:做统计使用。传入一组参数,最终返回一个值。又称为统计函数、聚合函数。
1.单行函数: 输入一行,输出也还是一行,检索一行处理一次;
2.多行函数: 输入多行数据,输出是一个结果,检索出来的数据分成组后再进行处理;
根据参数类型不同,可以分为:字符类函数: 是专门用于字符处理的函数,处理的对象可以是字符或字符串常量,也可以是字符类型的列;
函数 | 说明 |
ascii(C) | 返回一个字符的ASCII码,C表示一个字符 |
chr(i) | 返回给出ASCII码值所对应的字符,i表示一个ASCII码值 |
concat(s1,s2) | 将字符串s2连接到字符s1的后面;若s1为null,则返回s2;若s2为null,则返回s1;若s1和s2都为空,则返回null |
initcap(s) | 将字符串s的每个单词的第一个字母大写,其他字母小写;单词之间用空格、控制字符、标点符号来区分 |
instr(s1,s2[,i][,j]) | 返回字符串s2在字符串s1中第j次出现的位置,搜索从字符串s1的第i个字符开始; 当没有发现要查找的字符时,该函数的返回值为0; 若i为负数,则搜索将从右到左进行,但函数的返回位置还是按从左到右来计算; s1和s2均为字符串,i和j均为整数,默认值为1 |
length(s) | 返回字符串s的长度;若s为null,则返回值为null |
lower(s) | 返回字符串s的小写形式 |
upper(s) | 返回字符串s的大写形式 |
ltrim(s1,s2) | 删除字符串s1左边的字符串s2 |
rtrim(s1,s2) | 删除字符串s1右边的字符串s2 |
trim(s1,s2) | 删除字符串s1左右两端字符串s2 |
replace(s1,s2[,s3]) | 使用s3字符串替换出现在s1字符串中的所有s2字符串,并返回替换后的新字符串;s3的默认值为空字符串 |
substr(s,i[,j]) | 从字符串s的第i个位置开始截取长度为j的子字符串;若省略j,则直接截取到尾部 |
SHOW VARIABLES LIKE '%char%'/*显示客户端的字符集*/
#1.length获取参数长度'字节个数'
SELECT
LENGTH('john');
#2.CONCAT(str1,str2,...) 拼接字符串
SELECT
CONCAT(last_name,'_',first_name) AS 姓名
FROM
employees;
#3.upper、lower
SELECT UPPER('john');#小转大
SELECT LOWER('JOHN');#大转小
#4.substr、substring截取字符串
'方法的重载名字一样,参数列表不一样'
'MySQL中的索引都是从1开始的'
'使用1个参数的,截取从指定索引处,后面的所有字符'
SELECT
SUBSTR('李莫愁爱上了陆展元',7) 结果;
'使用2个参数的,截取从指定索引处,指定长度的字符'
SELECT
substr('李莫愁爱上了陆展元',1,3) 结果;
#5.instr:返回字符串中,子串的起始索引(第一次出现的地方),没有返回0
SELECT INSTR ('杨不悔殷六侠爱上了殷六侠','殷8侠') AS out_put;