SQL 常用api

SQL常用Api

数值类函数

ROUND

对数字进行四舍五入,第一个参数是需要四舍五入的数值,第二个参数是保留几位小数。

SELECT ROUND(5.73)--取值6
SELECT ROUND(5.73,1);--取值5.7
SELECT ROUND(5.735,2);--取值5.74
TRUNCATE

对数字进行截断,第一个参数是需要截断的数值,第二个参数是保留几位小数。

SELECT TRUNCATE(25.735,1);--取值25.7
SELECT TRUNCATE(25.75,1);--取值25.7
CEILING

对数字进行向上取整,获取大于等于它的最小整数,参数是需要截断的数值

SELECT CEILING(25.75);--取值26
SELECT CEILING(26);--取值26

字符串类函数

LENGTH

获取字符串长度

SELECT LENGTH('WANG');--4
UPPER

使每一个字符串中的英文字符变大写

SELECT UPPER('wang');--WANG
LOWER

使每一个字符串中的英文字符变小写

SELECT LOWER('WANG');--wang
TRIM

去掉字符串两侧的空格

SELECT LENGTH(TRIM('   ww   '));--2
RTRIM

去掉字符串后边的空格

SELECT LENGTH(RTRIM(' ww   '));--3
LEFT

截取字符串的前几个字符,第一个参数是需要截取的字符串,第二个参数是截取长度

SELECT LEFT('WANG',2);--WA
RIGHT

截取字符串的倒数几个字符,第一个参数是需要截取的字符串,第二个参数是截取长度

SELECT RIGHT('WANG',2);--NG
SUBSTRING

截取字符串,第一个参数是要截取的字符串,第二个参数是截取位置的索引(从1开始查),第三个参数是截取长度

SELECT SUBSTRING('wang',2,2);--an
SELECT SUBSTRING('wang',2);--ang
LOCATE

获取第一次遇见当前字符/字符串的下标,从1开始

第一个参数是要查找的字符/字符串,第二个参数是查找的字符字符串。

SELECT LOCATE('w','wang');--1
SELECT LOCATE('ng','wang');--3
REPLACE

替换字符,第一个参数是要替换的字符串,第二个参数是老字符/老字符串,第三个参数是新字符/字符串

SELECT REPLACE('wang','w','hu');--huang
CONCAT

字符串拼接。

SELECT CONCAT('wa','ng');--wang
SELECT CONCAT('w','a','n');--wan

日期/时间

NOW

获取当前时间年月日,时分秒。

SELECT NOW();--2021-01-01 01:02:03
CURDATE

获取年月日

SELECT CURDATE();--2021-01-01
CURDATE

获取时分秒

SELECT CURTIME();--01:02:03
YEAR/MONTH/DAY

分别返回年月日

SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW());--2021,1,1
HOUR/MINUTE/SECOND

分别返回时分秒

SELECT HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());--1,2,3
DAYNAME

获取英文星期几

SELECT DAYNAME(NOW());--Monday
MONTH

获取英文月份

SELECT MONTHNAME(NOW());--January
EXTRACT

获取数字类型的日期

SELECT EXTRACT(YEAR FROM NOW());--2021
DATE_FORMAT

日期的格式化,第一个参数获取日期,第二个参数是格式化信息

其中请注意:

形式寓意形式寓意
%y两位数的年份比如(2021年返回21)%Y四位数的年份比如(2021年返回2021)
%m两位数的份比如(一月份返回01)%M返回英文月份比如一月份返回(January)
%d两位数的日比如(一号返回01)%D返回英文日期比如(一号返回1th)

从该网站进行查找翻阅:MySQL DATE_FORMAT() 函数

只要有这些字符便会被替换为数字,所以我们方便的进行数字格式修改。

SELECT DATE_FORMAT(NOW(),'%y:%m');--21:01
DATE_ADD

日期时间的增加。

SELECT NOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR);
--2021-01-01 01:02:03, --2022-01-01 01:02:03 
DATE_SUB

日期是时间的减少。

SELECT NOW(),DATE_SUB(NOW(),INTERVAL 1 YEAR);
--2021-01-01 01:02:03, --2020-01-01 01:02:03 
SELECT NOW(),DATE_ADD(NOW(),INTERVAL -1 YEAR);
--2021-01-01 01:02:03, --2020-01-01 01:02:03 
DATEDIFF

求两个日期相差多少天,注意早的日期在后。

SELECT DATEDIFF('2021-01-05 09:00','2021-01-01 09:01');
--4
TIME_TO_SEC

求两个日期相差多少秒,注意早的日期在前

SELECT TIME_TO_SEC('2021-01-05 09:01')-TIME_TO_SEC('2021-01-01 09:00');
--60

空值变换

IFNULL

如果这个值是空值则输出我们定义的值。

下列例子中shipper_id字段为空的地方都变为了Not assigned;

SELECT order_id,IFNULL(shipper_id,'Not assigned') AS shipper
FROM orders;
COALESCE

如果这个值是空值则输出另一个字段的值,如果另一个字段也是空值输出我们定义的值。

下列例子中shipper_id字段为空的地方都变为了comments字段的值,如果该字段也为空输出Not assigned;

SELECT order_id,COALESCE(shipper_id,comments,'Not assigned') AS shipper
FROM orders;
IF

判断语句,第一个参数为判断条件,第二个参数为满足条件后返回的值,第三个参数为不满足条件后返回的值。

下列例子中如果是当年订单返回Active否则返回Archived

SELECT order_id,order_Date,IF(YEAR(NOW())= YEAR(order_date),'Actice','Archived')
FROM orders
CASE

判断语句当有多个条件的时候使用。

CASE开始,END结束,WHEN做条件,THEN做返回值。

SELECT order_id,order_Date,
  CASE 
    WHEN YEAR(NOW()) = YEAR(order_date) THEN 'Active'
    WHEN YEAR(NOW())-1 = YEAR(order_date) THEN 'Last year'
    WHEN YEAR(NOW())-1 > YEAR(order_date) THEN 'Archived'
    ELSE 'Future'
  END AS category  
FROM orders
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值