字符串函数
拼接字符串:concat
select concat(23,323,'多岁的'),运行结果就是‘23323多岁的’
如,students表里有 封神 这个人,需要这句话“封神是天庭的男仙人”;:select concat(name,'是',hometown,'的',sex,'仙人') from students;
包含字符个数length(str)(汉字在utf-8里,一个字包含3个字符)
如,查看studens表里sex字段的字符数:select length(sex) from students
截取字符串
left(str,num)返回字符串str的左端num个字符,如:需要学生表的姓:select left(name,1) from students
right(str,num)返回字符串str的右端num个字符,类似上面
substring(str,ps,num)返回字符串str的位置ps起num个字符(不同于表里的位置0开始)例如:select substring('adsds3',2,3);返回结果是第二位算起3位:dsd
去除空格
ltrim(str)返回结果删除了左空格的字符串str,专业去除空格
rtrim(str)返回结果删除了右空格的字符串str
select ltrim(' less '),rtrim(' less '),rtrim(ltrim(' less '))(去除左边、右边、左右同时去掉空格)
大小写转换,函数如下
lower(str);全部显示为小写
upper(str);全部显示为大写
select lower('DSKJFHsdk');结果是DSKJFHsdk显示出来的都是小写
求四舍五入值round(n,d),n表示原数,d表示小数位数,不写则默认为0
select round(2.544,1);意思是2.5保留1位小数
数学函数,求x的y次幂pow(x,y)
select pow(2,3);
获取圆周率PI()
select PI();保留9位小数:select round(PI(),9)
随机数rand(),值为0-1.0的浮点数
select rand();
随机取一条数据:select * from studens s order by rand() limit 1;
日期时间函数当前日期current_date()
select current_date();
当前时间current_time()
select current_time();
当前日期时间now()
select now();
日期格式化date_format(date,format)
参数format可选值如下
%Y 获取年,返回完整年份
%y 获取年,返回简写年份
%m 获取月,返回月份
%d 获取日,返回天值
%H 获取时,返回24进制的小时数
%h 获取时,返回12进制的小时数
%i 获取分,返回分钟数
%s 获取秒,返回秒数
例:将使用-拼接的日期转换为使用空格拼接
select date_format('2016-12-21','%Y %m %d');
流程
case语法:等值判断
说明:当值等于某个比较值的时候,对应的结果会被返回;如果所有的比较值都不相等则返回else的结果;如果没有else并且所有比较值都不相等则返回null
select case 1 【输入1】
when 1 then 'one' 【如果是1,返回one】
when 2 then 'two' 【如果是2,返回two】
else 'zero' end as result;【否则,返回zero,结束运行】
例如:显示姓,如果是男,则称先生,若是女,则叫美女
第一步找到需要的表和字段:select name,sex from students
二,取姓:select left(name,1),sex from students
三,根据姓需要判断,用case语句:
select left(name,1),sex
case sex
when '男' then '先生'
when '女' then '美女'
else '保密'
end as renyao
from students
四,在先生美女前面拼接上姓
select left(name,1),sex,
case sex
when '男' then concat(left(name,1),'先生')
when '女' then concat(left(name,1),'美女')
else '保密'
end as renyao
from students;【如果性别是男,返回姓加先生,如果是女返回,姓加美女,否则保密,end结束,字段命名为renyao】
自定义函数(自己创建一个自己才知道的函数自己使用)
语法如下
delimiter $$【在“sql语句”部分编写的语句需要以分号结尾,此时enter会直接执行,所以要创建函数前需要指定其它符号作为分割符,此处使用$$,也可以使用其它字符,输完SQL语句后,需要运行程序再输入运行,使用完后再取消分割符】
create function 函数名称(参数列表) returns 返回类型
begin
sql语句
end
$$
delimiter ;
说明:delimiter用于设置分割符,默认为分号
在“sql语句”部分编写的语句需要以分号结尾,此时回车会直接执行,所以要创建存储过程前需要指定其它符号作为分割符,此处使用//,也可以使用其它字符