- 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】即可。
- 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',5,5)
-- 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】即可。
- 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。
- 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:想获得更多内容,可访问该链接
- 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
- IFNULL(‘某个字段’,替换成的内容)——
将某个字段为NULL时替换成其他内容
SELECT
order_id,
IFNULL(shipper_id,'NOT ASSINGED')AS shipper
FROM orders
-- 当shipper_id为空时,会返回'NOT ASSIGNED'
- 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'
- IF(EXPRESSION,‘YES-VALUE’,‘ELSE-VALUE’)——
测试是否符合一个表达式,根据结果返回不同的值
SELECT
order_id,
order_date,
IF( YEAR(order_date) = 2021,
'Active',
'Archive') AS category
FROM orders
- 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”的内容基本更完,欢迎大家指正错误~