基础内建函数

Numeric Functions(数学函数)

-- 四舍五入
-- round(5.1201,2)	保留两位小数
SELECT ROUND(5.1201,2);		-- 5.12
SELECT TRUNCATE(5.1201,2);		-- 截断数字
SELECT CEILING(5.2)		-- 返回比传入值大的整数:6
SELECT FLOOR(5.2)	-- 返回比传入值小且最近的整数:5
SELECT ABS(5.2)		-- 绝对值
SELECT RAND( )		-- 获取随机数(0,1)

String Functions(字符串相关函数)

-- 获取长度
SELECT LENGTH('sky')

-- 去除空格
SELECT RTRIM('Sky   ')
SELECT LTRIM('   Sky')
SELECT TRIM('    SKY   ')

-- 截取字符串
SELECT LEFT('Kindergarten', 4)	-- 	Kind
SELECT RIGHT( 'Kindergarten' , 6)	-- garten
SELECT SUBSTRING('Kindergarten', 3, 5)
SELECT SUBSTRING('Kindergarten ',3)

-- 定位位置
SELECT LOCATE('n', 'Kindergarten')
SELECT LOCATE('garten', 'Kindergarten')

-- 连接字符串
SELECT CONCAT('first','last')

SELECT CONCAT(first_ name,' ',last_name) AS full name
FROM customer

-- 替换字符串
SELECT REPLACE('Kindergarten', 'garten', 'garden')

-- 大小写变化
SELECT UPPER('sky')
SELECT LOWER('SKy')

Date Functions(日期函数)

-- 年月日时分秒	年月日		时分秒
SELECT NOW(), CURDATE() ,CURTIME( )

-- 选取日期
SELECT MONTH(NOW())
SELECT DAY(NOW())
SELECT YEAR(NOW( ))
SELECT HOUR(NOW( ))
SELECT SECOND(NOW( ))
SELECT MINUTE(NOW( ))

-- 获取月日
SELECT DAYNAME(NOW())
SELECT MONTHNAME(NOW( ))

-- 所以如果你想将你的数据导出到其他的数据库系统,最好是使用extract函数
SELECT EXTRACT(YEAR FROM NOW( ))

-- 查找今年的订单
SELECT *
FROM orders
WHERE YEAR(order_date) = YEAR(NOW())

Formatting Dates and Times

SELECT DATE_FORMAT(NOW(),'%M %d %Y')	-- May 18 2020	(当字母大小写变化时会有些许不同)
SELECT DATE_FORMAT(NOW(),'%m %D %y')	-- 05 18th 20
SELECT TIME_FORMAT(NOW(),'%H:%i %p')	-- 19:25 PM

Calculating Dates and Times(计算日期值)

-- 年月日增加减少
SELECT DATE_ADD(NOW(),INTERVAL 1 YEAR)	-- 2021-05-18 19:35:01

SELECT DATE_ADD(NOW(),INTERVAL -1 YEAR) -- 2019-05-18 19:35:12

SELECT DATE_SUB(NOW(),INTERVAL 1 YEAR)  -- 2019-05-18 19:35:21

-- 计算时间间隔
SELECT DATEDIFF('2014-01-04','2014-01-02')	-- 2

SELECT DATEDIFF('2014-01-04 7:00','2014-01-02 9:00')	-- 2

SELECT TIME_TO_SEC('9:00') - TIME_TO_SEC('8:00')	-- 3600以秒为单位

The IFNULL and COALESCE Functions

SELECT 
	CONCAT(first_name,' ',last_name) AS customer,
-- 	替换为空的参数
	IFNULL(phone,'Unknown') AS phone
-- 一个个寻找,找到不为NULL则返回
-- 	COALESCE(phone,customer_id,'Unknown')
FROM customers

The IF Function(类似三元表达式)

-- 产品id、名字、订单总数、订单频率
SELECT 
	product_id,
	`name`,
	COUNT(*) AS orders,
	IF(COUNT(*)>1,'Many times','Once') AS frequency
FROM products p
JOIN order_items oi USING(product_id)
-- 进行分组
GROUP BY product_id,`name`

The CASE Operator

SELECT 
	CONCAT(first_name,' ',last_name) AS customer,
	points,
	CASE 
        WHEN points > 3000 THEN
            'Gold'
        WHEN points > 2000 THEN
            'Silver'
        ELSE 'Bronze'
	END AS category
FROM customers
ORDER BY points DESC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值