MySQL函数
数字函数
select ceil( column_name) from table_name;
select floor( column_name) from table_name;
POW(x,y)/POWER(x,y) 返回 x 的 y 次方
select name, age, POW( age, 2 ) from students;
select name, age, rand( ) from students;
select
clazz
, round ( avg ( age) , 2 ) as avg_age
from students
group by clazz
having avg ( age) > 22.5
select
clazz
, avg ( age)
, round ( avg ( age) ) as avg_age
from students
group by clazz
字符串函数
LENGTH 字节数 CHAR_LENGTH(s)/CHARACTER_LENGTH(s)返回字符串 s 的字符数
select clazz, LENGTH( clazz) , CHAR_LENGTH( clazz) , CHARACTER_LENGTH( clazz) from students;
select LENGTH( 'wyl' ) , CHAR_LENGTH( 'wyl' ) ;
CONCAT(s1,s2…sn)字符串 s1,s2 等多个字符串合并为一个字符串
select * , CONCAT( name, ',' , email, ',' , password) from users;
CONCAT_WS(separator, str1, str2, …)指定分隔符的拼接
select * , CONCAT_ws( '#' , name, email, password) from users;
SUBSTR/SUBSTRING(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串
select * , SUBSTR( clazz, 1 , 2 ) from students
STRCMP(s1,s2)比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1
select * , STRCMP( clazz, '文科六班\r' ) from students
日期函数
CURDATE()/CURRENT_DATE()返回当前日期
SELECT CURRENT_DATE , CURRENT_TIME , CURRENT_TIMESTAMP
CURRENT_TIME()/CURTIME()返回当前时间 CURRENT_TIMESTAMP()返回当前日期和时间 DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数
SELECT DATEDIFF( '2024-05-07' , '1908-12-04' )
TIMEDIFF(time1, time2)计算时间差值
select TIMEDIFF( '10:58:00' , '09:00:00' )
SELECT UNIX_TIMESTAMP( )
select FROM_UNIXTIME( UNIX_TIMESTAMP( ) - 10 * 24 * 60 * 60 )
DATE_ADD(d,INTERVAL expr type)从日期增加指定的时间间隔。
SELECT DATE_ADD( hire_date, interval - 10 day ) from emp;
SELECT DATE_ADD( hire_date, interval 10 month ) from emp;
DATE_SUB(date,INTERVAL expr type)函数从日期减去指定的时间间隔。
SELECT DATE_SUB( hire_date, interval 10 day ) from emp
DATE_FORMAT(d,f)表达式 f的要求显示日期 d
select DATE_FORMAT( CURRENT_DATE , '%Y-%m-%d %H:%i:%S' ) ;
select DATE_FORMAT( CURRENT_DATE , '%m%d %Y' ) ;
STR_TO_DATE(string, format_mask)将字符串转变为日期
select STR_TO_DATE( '2024王雨龙05朱超07张雪' , '%Y王雨龙%m朱超%d张雪' ) ;
select
YEAR ( '2024-05-07' )
, MONTH ( '2024-05-07' )
, day ( '2024-05-07' )
, week( '2024-05-07' )
, WEEKDAY( '2024-05-07' )
, WEEKOFYEAR( '2024-05-07' )
select
WEEKOFYEAR( DATE_ADD( '2000-07-30' , INTERVAL 24 year ) )
, WEEKDAY( DATE_ADD( '2000-07-30' , INTERVAL 24 year ) )
, DATE_ADD( DATE_ADD( '2000-07-30' , INTERVAL 24 year ) , INTERVAL - 8 day )
, DATE_ADD( DATE_ADD( '2000-07-30' , INTERVAL 24 year ) , INTERVAL - 2 day )
高级函数
IF(expr,v1,v2)如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2
select
*
, if ( age= 21 , '1' , if ( age= 22 , '2' , if ( age= 23 , '3' , '4' ) ) )
from students;
IFNULL(v1,v2) 如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。
select name, IFNULL( email, '888@qq.com' ) from users;
**CASE (WHEN THEN) + ELSE END **
select
*
, case
when age= 21 then '1'
when age= 22 then '2'
when age= 23 then '3'
when age= 24 then '4'
else '5' end
from students
select CAST( age AS DECIMAL ) from students;