MySQL学习中的DBL的语法知识3(单行函数)

开篇点题单行函数

概念:类似于java中的方法,将一组逻辑语句封装在方法体重,对外暴露方法的名
好处:1、隐藏了实现细节 2、提高代码的重要性
调用:select 函数名() [from 表];
特点:①叫什么②干什么
分类:
1.单行函数 如concat、length、ifnull等
2.分组函数 (当然今天这个不在这里面

字符函数

函数名功能
length计算长度
concat用来字符的拼接
upper转大写
lower转小写
substr截取字符
instr该字符串第一次出现的下标
trim去掉左右的空格(默认,也可以设置去掉其他的)
lpad左填充(如果超过了就要从右边截断)
rpad自己想去
replace替换

这里是一些学习的时候相关的演示代码

#一、字符函数
#length
SELECT LENGTH('join');
SELECT LENGTH('求求了点个赞再走吧')#中文是三个字节哦

#2.concat 拼接字符串
SELECT CONCAT(last_name, '_', first_name) AS 姓名 FROM employees;

#3.upper, lower
SELECT UPPER('join');
SELECT LOWER('All');

#案例: 性别大写,名字小写,然后拼接
SELECT CONCAT(UPPER(last_name),LOWER(first_name) AS 姓名 FROM employees;#函数是可以嵌套使用的哦

#4.substr, substring 截取字符 这两个意思是一样的

SELECT SUBSTR('我爱上了她',2) AS out_put;#索引是从1开始的哦
#截取是指的字符长度不是字节长度哈
SELECT SUBSTR('我爱上了她',1,1) AS out_put;#左闭右也是闭哈

#案例:姓名中首字符大写,其他字符小写然后用_拼接,显示出来
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) out_put FROM employees;

#5.instr #返回字串第一次出现的索引,如果找不到就返回0
SELECT INSTR('我爱上了她','了她') AS out_put;

#6.trim 去掉左右的空格(默认)
SELECT LENGTH(TRIM('   我爱上了她    '))) AS out_put;

SELECT TRIM('a' FROM 'aaaa我爱上了她aaaa') AS out_put;

#7.lpad 左填充(如果已经超过了就从右边截断) rpad自己想去
SELECT LPAD('s',10,'*') AS out_put;


#8.replace
SELECT REPLACE ('我又爱上了他','他','她') AS out_put;

数学函数

函数功能
round四舍五入
ceil向上去整
floor向下去整
truncate截断
mod取余
rand获得随机数,返回0-1之间的小数

同上

#round 四舍五入
SELECT ROUND (1.45);
SELECT ROUND(1.234,2);#保留两位小数
#ceil向上取整
SELECT CEIL(2.4);
#floor向下取整
SELECT FLOOR(1.2);
#truncate 截断
SELECT TRUNCATE(1.4800,1);
#mod 取余
SELECT MOD(11,2);

日期函数

函数功能
now返回系统当前的日期+时间
curdate返回系统当前日期
curtime返回系统当前的时间
year截取年份
等等截取月份,日,分,秒(用英文就是函数了)
str_to_date将字符转换成日期(这个有一些格式要求的)
date_format将日期转换为字符(也有格式要求)
datediff日期相减返回天数

相关代码

#now 返回当前系统日期+时间
SELECT NOW();

#curdate 返回当前系统日期, 不包含时间
SELECT CURDATE();

#curtime 返回当前系统的时间,不包含日期
SELECT CURTIME();

#可以获取指定部分,年,月,日,小时,分钟,秒
SELECT YEAR(NOW()) AS#函数里面要有该字段(now()里面有年份字段)
SELECT MONTH(NOW()) AS;
SELECT MONTHNAME(NOW()) AS 月英文;
SELECT DAY(NOW()) AS;
SELECT YEAR('190-2-2') AS;
SELECT hiredate FROM employees;

#str_to_date 将字符转换成日期
SELECT STR_TO_DATE('1992-3-2','%Y-%c-%d') AS out_put;#一定要一一对应
#date_format 将日期转换成字符
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日');

#用(xx月/xx日 xx年)表试 使用date_fromat去转换
SELECT last_name, DATE_FORMAT(hiredate,'%m月/%d日 %y年') AS 入职日期
FROM employees
WHERE commission_pct IS NOT NULL;

#datadiff
SELECT DATEDIFF('2012-1-1','2011-1-1');

流程控制函数

函数功能
if如果第一个参数为真就返回第二个参数的值,反之返回第三个参数
case具体可以看看下面的代码 我里面有解释(我说不清楚)
#其他函数
SELECT VERSION();
SELECT DATABASE();

#流程控制函数
#if函数
SELECT IF(10 > 5, '大', '小');

SELECT last_name, commission_pct, IF(commission_pct IS NULL, '没', '有')
FROM employees;

#2.case函数
/*
case 要判断的字段或者表达式
when 常量1 then 要显示的值1或语句1;(语句一定要加;)
when 常量1 then 要显示的值1或语句1;
····
else 要显示的值n或者语句n;
end

*/
/*
案例:查询员工的工资,要求
部门号==30,显示的工资为1.1倍
部门号==40,显示的工资为1.2倍
部门号==50,显示的工资为1.3倍
部门号==60, 显示的工资为1.5倍

*/

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;

#case 使用的第二种方式 类似于java中的多重if
/**
case
when 条件1 then 要先是的值或语句;(如果是真的话)
···
else 要先的值n或者语句;(语句一定要加分号)
end
*/

SELECT salary,
CASE
WHEN salary > 20000 THEN 'A'
WHEN salary > 10000 THEN 'B'
ELSE salary
END
FROM employees;

这里可以直达下面然后点赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值