0
点赞
收藏
分享

微信扫一扫

MySQL(五)

小布_cvg 2022-01-06 阅读 138
数据库sql

1、数值函数

四舍五入:ROUND(数值,精准度<小数点后几位>)
SELECT ROUND(7.7)
SELECT ROUND(7.75,1)

截取:TRUNCATE(数值,保留小数点后几位,移除其他位数)
SELECT TRUNCATE(9.4312,1)  --9.4

上限函数:CEILING()<返回大于或等于这个数字的最小整数>
SELECT CEILENG(5.6)  --6

地板函数:FLOOR()<返回小于或等于这个函数的最大整数>
SELECT FLOOR(7.3) --7

绝对值: ABS()
SELECT ABS(-5.2) --5.2

生成0-1之间的随机浮点数: RAND()
SELECT RAND()  

2、字符串函数 

处理字符串值的函数

得到字符串中的字符数:LENGTH()
SELECT LENGTH('sky') --3

字符串装换大写:UPPER()
SELECT UPPER('sky')  --SKY

字符串转换小写:LOWER()
SELECT UPPER('SKY')  --sky

一处字符串左侧空白字符或其它预定义字符:LTRIM()
SELECT LTRIM('         Sky')  --Sky

一处字符串右侧空白字符或其它预定义字符:RTRIM()
SELECT RTRIM('Sky         ')  --Sky

删除所有前后的空格:TRIM()
SELECT TRIM('   sky    ')  --sky

返回字符串左侧的几个字符:LEFT()
SELECT LEFT('abcdef',3) ---abc

返回字符串右侧的几个字符:RIGHT()
SELECT RIGHT('abcdef',2)  --ef

字符截取函数:SUBSTRING('字符串',开始位数,截取几位<不写就是截取开始位数后所有>)
SELECT SUBSTRING('abcdef',3,2) --cd

第一个字符或者一串字符匹配位置 LOCATE('搜索字符或字符串','被锁搜的字符串')
<搜索不到显示0,不区分大小写>
SELECT LOCATE('c','abcdef') --3
SELECT LOCATE('def','abcdef')  --4

替换一个字符或者一串字符:REPLACE('原字符串','被替换的字符串','替换的字符串')
SELECT REPLACE('Kindergarten','garten','garden') --Kindergarden

串联两个字符串:CONCAT()
SELECT CONCAT('first','last')  --firstlast

3、日期函数 

调用当前日期和时间:NOW()
SELECT NOW()

调用日期:CURDATE()
SELECT CURDATE()

返回当前时间:CURTIME()
SELECT CURTIME()

获取当前年份 YEAR(  )
SELECT YEAR( NOW() )

获取当前月份 MONTH(  )
SELECT MONTH( NOW() )

获取当前日期 DAY()
SELECT DAY( NOW() )

获取当前时刻 HOUR()
SELECT HOUR( NOW() )

获取当前星期 DAYNAME( )
SELECT DAYNAME( NOW() )

获取当前月份 MONTHNAME( )
SELECT MONTHNAME( NOW() )

自定义获取: EXTRACT(想获取的单位  FROM  时间日期值)
SELECT EXTRACT( YEAR FROM NOW() )

4、格式化日期和时间 

SELECT DATA_FORMAT(NOW(),'%y') --%y 代表两位的年份 --输出结果是22
SELECT DATA_FORMAT(NOW(),'%Y') --%Y 代表四位的年份 --输出结果是2022
SELECT DATA_FORMAT(NOW(),'%m') --%m 代表月份       --输出结果是01
SELECT DATA_FORMAT(NOW(),'%M') --%M 代表月份       --输出结果是January
SELECT DATA_FORMAT(NOW(),'%d') --%d 代表日         --输出结果为06

5、计算日期和时间 

当前日期增加一天
SELECT DATE_ADD( NOW(),INTERVAL 1 DAY )

当前日期增加一年
SELECT DATE_ADD( NOW(),INTERVAL 1 YEAR)、

当前日期减去一年
SELECT DATE_SUB( NOW(),INTERVAL 1 YEAR)

两个日期相距的天数 DATEDIFF()
SELECT DATEDIFF('1999-01-04','1999-01-05') --1

两个时间间的间隔 TIME_TO_SEC()
SELECT TIME_TO_SEC('09:00') --32400<从零点开始到9;00的秒数>
SELECT TIME_TO_SEC('09:00') - TIME_TO_SEC('09:02') -- -120

6、IFNULL和COALESCE函数 

IFNULL
如果 shipper_id 为空就返回 未分配
SELECT 
    order_id,
    IFNULL(shipper_id,'未分配')
FROM ORDERS

COALESCE
如果 shipper_id 成为空就返回 comments,如果comments为空就返回'未分配'
SELECT 
    order_id,
    COALESCE(shipper_id,comments,'未分配')
FROM ORDERS

7、IF函数 

如果YEAR(order_Data) = YEAR(NOW()) 这个条件为真返回 活跃 如果为假返回  归档
SELECT 
    order_id,
    order_data,
    IF(
        YEAR(order_Data) = YEAR(NOW()),
        '活跃',
        '归档'
    )

8、CASE运算符 

如果 YEAR(order_data) = YEAR(NOW()) 成立 返回 活跃
如果 YEAR(order_data) = YEAR(NOW()) - 1 成立 返回 去年
如果 YEAR(order_data) < YEAR(NOW()) - 1 成立 返回 归档
如果都不成立 返回 未来

SELECT
    order_id,
    CASE
        WHEN YEAR(order_data) = YEAR(NOW()) THEN '活跃'
        WHEN YEAR(order_data) = YEAR(NOW()) - 1 THEN '去年'
        WHEN YEAR(order_data) < YEAR(NOW()) - 1 THEN '归档'
        ELSE '未来'
    END
FROM orders

 

 

举报

相关推荐

0 条评论