MySQL基础单行函数、数学函数、日期函数

#length   获取参数值的字节个数
SELECT LENGTH('john');
SELECT LENGTH('心系五道口john');
注:UTF-8中一个中文代表三个字节,GBK中一个中文代表两个字节
----------------------------------------------------------------
#contact   拼接字符串
SELECT CONTACT(last_name,first_name)  姓名 from stuinfo
----------------------------------------------------------------
#upper,lower 字母大小写
SELECT UPPER('john');#变大写,结果为JOHN
SELECT LOWER('JOHN');#变小写,结果为john
#示例:将姓变大写,名变小写,然后拼接在一起
SELECT CONTACT(UPPER(last_name),LOWER(first_name)) AS 姓名 from stuinfo
-----------------------------------------------------------------
#substr,substring 截取字符串
SELECT SUBSTR('心系五道口',3) AS out_put;#截取从指定索引处后面所有字符,结果输出为五道口
注:索引从1开始
SELECT SUBSTR('心系五道口',1,2) AS out_put;#截取从指定索引处指定字符长度的字符,结果为心系
SELECT CONTACT(CONTACT(UPPER(SUBSTR(last_name,1,1),LOWER(SUBSTR(last_name,2)),'_',LOWER(first_name,1)) out_put;
#姓名中首字母大写,其他字符小写,然后用_拼接,显示出来,如显示Zou_shen
---------------------------------------------------------------------
#instr 显示子串在所给字符串第一次出现的的位置,如果找不到则为0
SELECT INSTR('ILOVEFAMILY','LOVE') AS out_put;#结果为2
-----------------------------------------------------------------------
#trim 去除前后空格
SELECT TRIM('    心系五道口   ') AS out_put;#结果为心系五道口
SELECT TRIM('a' from 'aaaa心系五道口aaaaaa') AS out_put;#结果为心系五道口
-------------------------------------------------------------------------
#LPAD 用指定的字符实现左填充指定长度
SELECT LPAD('心系五道口',8,'@') AS out_put;#结果为@@@心系五道口
SELECT LPAD('心系五道口',2,'@') AS out_put;#结果为心系
#RPAD 用指定的字符实现右填充指定长度
SELECT LPAD('心系五道口',8,'@') AS out_put;#结果为心系五道口@@@
---------------------------------------------------------------------------
#replace 替换
SELECT REPLACE('他喜欢上了隔壁女孩','女孩','老王') AS out_put;#结果为他喜欢上了隔壁老王
-----------------------------------------------------------------------------
*数学函数
#round 四舍五入
select round(1.6);#结果为2
select round(1.6,3);/*小数点后保留三位,结果为1.600*/
----------------------------------------------------------
#ceil 向上取整 floor 向下取整
select ceil(1.2);#结果为2
select floor(9.99);#结果为9
----------------------------------------------------------
#truncate 截断 保留小数点后几位
select truncate(1.34,5);#结果为1.34000
----------------------------------------------------------
#mod 取余
select mod(10,3);#结果为1
select 10%3;
--------------------------------------------------------
#日期函数
# now 返回当前系统日期+时间
select now();
#curdate 返回当前日期,不包含时间
select curdate();
#CURRENT_TIME 返回当前时间,不包含日期
select curtime();
#可以获取指定的部分,年月日、小时
select year(curdate());
select month(now());
select monthname(now());
-------------------------------------------------------
#str_to_date 将日期格式的字符转换为特定格式的日期
select str_to_date('1997-2-3','%Y-%c-%d') as 日期;
----------------------------------------------------
#date_format 将日期转换为字符
select date_format(now(),'%Y年%c月%d日') as 当前日期;
---------------------------------------------------
#其他函数
select version();
select DATABASE();
select user();
----------------------------------------------------------
#流程控制函数
#if函数 if else的效果
select name,age,if(age>20,'年龄超过20了','年龄小于20') as 备注 from stuinfo;
----------------------------------------------------------------------------
#case函数
/*效果类似switch case
case 判断字段或者表达式
when 常量1 then 要显示的值1或语句;
when 常量2 then 要显示的值2或语句;
.........
else 要显示的值n或语句n;
end
*/
select salary 基本工资, department_id,
case department_id
when 30 then salary*1.1;
when 40 then salary*1.2;
when 50 then salary*1.3;
else salary
end as 新工资
from employees;
-----------------------------------------
/*类似于多重if
case 
when 条件1 then 要显示的值1
when 条件2 then 要显示的值2
...........................
else 要显示的值n
end
*/
#查询员工工资的情况
select salary
case
when salary>20000 then 'A'
when salary>15000 then 'B'
when salary>10000 then 'C'
else 'D'
AS 工资级别
from employees;












猜你喜欢

转载自blog.csdn.net/qq_38452951/article/details/105654762