MySQL(五)

这篇博客详细介绍了SQL中常用的数值、字符串和日期函数,包括四舍五入、截取、上下限函数、绝对值、随机数生成等数值函数,以及字符串长度、大小写转换、空白处理、截取与替换等字符串函数。同时,还涵盖了日期获取、格式化及计算,以及IFNULL和COALESCE、IF和CASE语句在条件判断中的应用。这些函数和操作对于数据库管理和数据处理至关重要。
摘要由CSDN通过智能技术生成

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zjc啥也不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值