MYSQL ’s Builted Function即MySQL内置函数小结

  1. MYSQL Numeric Functions

①ROUND(the number,指定的精度)——
用于对‘the number’进行四舍五入,不指定精度时默认返回INT

SELECT ROUND(5.73,1) 
-- 5.7

②CEILING(the number)——
用于返回大于等于’the number’的最小整数

SELECT CEILING(9.1)
-- 10

③FLOOR(the number)——
用于返回小于等于’the number’的最大整数

SELECT FLOOR(4.7)
-- 4

④ABS(the number)——
用于返回’the number’的绝对值

SELECT ABS(-4.5)
-- 4.5

⑤RAND()——
用于生成0-1之间的随机浮点数

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

PS:想得到完整的函数名单,搜索【Mysql Numeric Functions】即可。

  1. MYSQL String Functions

①LENGTH(string)——
用于返回string的长度

SELECT LENGTH('sky')
-- 3

②UPPER(string)——
用于将string转换成大写

SELECT UPPER('Sky')
-- SKY

③LOWER(string)——
用于将string转换成小写

SELECT LOWER('Sky')
-- sky

④用于去除String中多余的空格
4.1 LTRIM(‘string’)——
移除string左侧的空白字符或其他预定义字符(LTRIM即left trim的简写)

SELECT LTRIM('  Sky')
-- Sky

4.2 RTRIM(‘string’)——
移除string右侧的空白字符或其他预定义字符(RTRIM即right trim的简写)

SELECT RTRIM('  Sky  ')
--   Sky

4.3 TRIM(‘string’)——
移除string中所有的空格

SELECT TRIM('  Sky  ')
-- Sky

⑤LEFT(‘string’,number)——
返回string左侧的number个字符

SELECT LEFT('Kindergarten',5)
-- Kinde

⑤RIGHT(‘string’,number)——
返回string右侧的number个字符

SELECT RIGHT('Kindergarten',5)
-- arten

⑥SUBSTRING(‘string’,start_index,*length)——
得到string中从start_num开始的length个字符,要注意起始的位置(第一个字符计数为1),如果没有指定长度,即截取到末尾(即length参数选填)。

SELECT SUBSTRING('Kindergarten',5)
-- ergarten
SELECT SUBSTRING('Kindergarten',55)
-- ergar

⑦LOCATE(searched string,original string)——
用于搜索original string中searched string第一次返回的位置(同样从1开始计数),不区分大小写

SELECT LOCATE('N','kind')
-- 3,不区分大小写
SELECT LOCATE('a','kind')
-- 0(表示不存在)
SELECT LOCATE('garten','kindergarten')
-- 7

⑧REPLACE(original string,replaced string,replace string)——
用于将original string中的replaced string替换成replace string。

SELECT REPLACE('kindgarten','garte','garaaa')
-- kindgaraaan,kindgarten中的garte被替换成garaaa

⑨CONCAT(string1,*connected-sign,string2)——
用于将string1与string2使用connected-sign连接,connected-sign可选,不填写时即什么符号也不用直接连接。

SELECT CONCAT('first','last')
-- firstlast

SELECT CONCAT(first_name,' ',last_name) AS full_name
FROM students

PS:想得到完整的函数名单,搜索【Mysql String Functions】即可。

  1. MYSQL Date Functions

①获取当前日期和时间/日期/时间
1.1 NOW()——获取当前日期和时间

SELECT NOW()
-- '2021-03-24 11:18:30'

1.2 CURDATE()——获取当前日期

SELECT CURDATE()
--'2021-03-24'

1.3 CURTIME()——获取当前时间

SELECT CURTIME()
-- '11:20:31'

②提取某日期的年份/月份/日期/时/分/秒
2.1 YEAR()——提取某日期的年份

SELECT YEAR(NOW())
-- 2021

2.2 MONTH()——提取某日期的月份

SELECT MONTH(NOW())
-- 3

2.3 DAY()——提取某日期具体日期

SELECT DAY(NOW())
-- 24

2.4 HOUR——提取某时间的小时数

SELECT YEAR(NOW())
-- 11

2.5 MINUTE()——提取某时间的分钟数

SELECT MINUTE(NOW())
-- 30

2.6 SECOND()——提取某时间的秒数

SELECT SECOND(NOW())
-- 5

PS:以上函数返回值全为整数型。

2.7 DATENAME()——返回某日期的星期名称

SELECT DAYNAME(NOW())
-- Wednesday

2.8 MONTHNAME()——返回某日期的月份名称

SELECT MONTHNAME(NOW())
-- March

PS:以上两个函数返回值为字符串类型。

③EXTRACT()——能够辅助实现以上所有函数**(除了DAYNAME&MONTHNAME)的功能,并且该函数符合SQL标准,可以移植**到其他DBMS平台。
格式:(欲提取的单位 FROM 日期/时间)

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

同理,可以将YEAR替换成MONTH/DAY/HOUR/MINUTE/SECOND。

  1. Formatting Dates and Times

①DATE_FORMAT(日期,字符串格式)——
根据字符串格式转换日期

SELECT DATE_FORMAT(NOW(),'%y') -- 21 (年份2位)
SELECT DATE_FORMAT(NOW(),'%Y') -- 2021 (年份4位数)
SELECT DATE_FORMAT(NOW(),'%m %y') -- 03 21 (月份数字形式)
SELECT DATE_FORMAT(NOW(),'%M %y') -- March 21 (月份名称)
SELECT DATE_FORMAT(NOW(),'%m %d %y') -- 03 24 21 (日期数)
SELECT DATE_FORMAT(NOW(),'%m %D %y') -- 03 24th 21 (带后缀的日期数)

②TIME_FORMAT(日期|时间,字符串格式)——
根据字符串格式转换时间

PS:想获得更多内容,可访问该链接
在这里插入图片描述在这里插入图片描述

  1. Calculating Dates and Times

①DATE_ADD(日期|时间,计算表达式)

SELECT DATE_ADD(NOW(),INTERVAL 1 DAY)
-- 2021-03-25 13:19:43,返回明天的同一时间
-- 同理可将DAY替换成MONTH/YEAR

②DATE_SUB(日期|时间,计算表达式)

SELECT DATE_SUB(NOW(),INTERVAL 1 DAY)
-- 2021-03-23 13:19:43,返回昨天的同一时间
-- 同理可将DAY替换成MONTH/YEAR

PS:以上两个函数可因为【计算表达式】中的数值为正/负实现替换。比如在DATE_ADD函数中将计算表达式的“INTERVAL 1 DAY”替换成“INTERVAL -1DAY”即可实现DATE_SUB函数的功能。

③DATEDIFF(DAY1,DAY2)——计算两个日期的相隔天数,如果DAY1>DAY2,得到一个正值。

SELECT DATEDIFF('2021-3-22','2021-3-10')
-- 12
SELECT DATEDIFF('2021-3-22 9:00','2021-3-10 17:00')
-- 12,该函数返回的是天数的间隔,不考虑时间间隔。

④TIME_TO_SEC() ——计算从零点起流逝的秒数

SELECT TIME_TO_SEC('9:00')
-- 32400

-- 计算时间间隔,可以两个时间做差:(结果是秒为单位)
SELECT TIME_TO_SEC('9:00')-TIME_TO_SEC('9:02') 
-- -120
  1. IFNULL(‘某个字段’,替换成的内容)——
    将某个字段为NULL时替换成其他内容
SELECT 
	order_id,
	IFNULL(shipper_id,'NOT ASSINGED')AS shipper
FROM orders
-- 当shipper_id为空时,会返回'NOT ASSIGNED'
  1. COALESCE(VALUE_1,VALUE_2,VALUE_3,…,VALUE_N)——返回这些值中第一个非空的值
SELECT 
	order_id,
	COALESCE(shipper_id,comment_id,assign_id,'NOT ASSIGNED')AS shipper
FROM orders
--返回函数内第一个不为空的值,如果均为空,则返回'NOT ASSIGNED'
  1. IF(EXPRESSION,‘YES-VALUE’,‘ELSE-VALUE’)——
    测试是否符合一个表达式,根据结果返回不同的值
SELECT 
	order_id,
    order_date,
    IF( YEAR(order_date) = 2021,
        'Active',
        'Archive') AS category
FROM orders
  1. CASE WHEN——适用于有多个测试条件的情况
    格式:注意不要忘记END
 CASE WHEN E1 THEN 
 	  WHEN E2 THEN
 		   ……
      ELSE
END
SELECT 
	order_id,
    order_date,
    CASE WHEN YEAR(order_date) = YEAR(NOW()) THEN 'Active'
		 WHEN YEAR(order_date) = YEAR(NOW())-1 THEN 'LAST YEAR'
		 ELSE 'Archive' 
	END AS category
FROM orders

Summary:以上,关于“MYSQL ’s Builted Function”的内容基本更完,欢迎大家指正错误~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值