八、系统函数(sql,mysql)

1.数值类型的函数

## mod 求余
SELECT 10%3;
SELECT MOD(10,3);
##ceil()  向上取整
SELECT CEIL(-10.1);
##floor()  向下取整
SELECT FLOOR(-10.1);

##round() 四舍五入
# round(值)  四舍五入取整
SELECT ROUND(10.6);

# round(值,保留小数位)  四舍五入
SELECT ROUND(10.6161,2);

#sign(值) 返回这数值的符号:  正数: 1 负数: -1  零: 0
SELECT SIGN(sal-1000) FROM emp ;

#产生一个随机数 
# 2~10 随机整数
SELECT FLOOR(RAND()*9+2);

2.字符函数

SELECT 'abc'+'hello';
## 获取名字由5个字符组成的
## length(列名|字符串) 获取字符串长度
SELECT * FROM stu WHERE LENGTH(sname) = 5;

#字符串连接
SELECT CONCAT('hello','world','123')
## 把员工的姓名与岗位连在一起,使用-分割
SELECT CONCAT(ename,'-',job) FROM emp;

# 替换指定个数的字符:
#INSERT(列名/值,开始位置,个数,替换的值) 
#开始位置从1开始
# hello 替换 指定位置
SELECT INSERT('hello',3,2,'hh');
#replace() 替换 指定字符 全替换
SELECT REPLACE('helloworldll','ll','dd');
#插入
SELECT INSERT('hello',3,0,'hh');
#删除
SELECT INSERT('hello',3,2,'');

#截取 
# substring(字符串|列, 开始位置) 从开始位置截取到字符串末尾
SELECT SUBSTRING('hello',2)
# substring(字符串|列, 开始位置,截取的长度) 从开始位置截取指定长度
SELECT SUBSTRING('hellosfsdf',2,4)

#left(字符串|列, 长度)  等同 substring(字符串|列, 1,截取的长度)
#从左往右截取
SELECT LEFT('hellosfsdf',2);
SELECT SUBSTRING('hellosfsdf',1,2)

#right(字符串|列, 长度) 从右往左截取
SELECT RIGHT('hellosfsdf',2);

#trim() 去左右空格
SELECT TRIM('    hello   sfsdf   ');
#REVERSE() 反转
SELECT REVERSE('hello');

3.日期函数

#得到当前系统日期
# curdate
SELECT CURDATE();
SELECT CURRENT_DATE();
#得到当前系统时间
SELECT CURTIME();

#得到当前系统日期加时间
# now() 
SELECT NOW();
#sysdate
SELECT SYSDATE();

#获取日期的指定部分值

SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAYOFMONTH(NOW());
SELECT DAYNAME(NOW());
SELECT DAYOFWEEK(NOW());


#日期相加adddate(日期,天数)
SELECT ADDDATE(NOW(),200);

#日期相减: SUBDATE()
SELECT SUBDATE(NOW(),200);

#两个日期相隔的天数  datediff(日期1,日期2)
#日期1-日期2
SELECT DATEDIFF(NOW(),'2008-8-8');

SELECT DATEDIFF(NOW(),'1990-12-12');
#SimpleDateFormat
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日');

#获取月中最后一天的日期 LAST_DAY(日期)
SELECT LAST_DAY('2020-02-01');

4.if

# if(条件, 值1,值2)
# if-else  条件为true, 返回值1,否则返回值2
#查询员工的薪水情况: >1000 正常工资    <=1000 低工资
SELECT e.*,IF(sal >1000,'正常工资','低工资') 薪资情况 FROM emp e;

# case  if --else if  --else if ... --else
/*
  case  
    when 条件  then 值1
    when  条件  then  值2
    ....
    else 值n
  end    

*/
## 查询员工的薪水情况: >=3000 高工资  3000> >=1000 中等工资    <1000 低工资
SELECT e.*, CASE 
	WHEN sal >=3000 THEN '高工资' 
	WHEN sal >=1000 THEN '中等工资'
	ELSE '低工资'
        END  薪水情况
FROM emp e;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值