MySQL常用函数
单行函数
字符函数
MySQL中的下标从1开始
-
length: 字符串长度
-
char_length: 返回字符长度
-
concat: 拼接字符串
-
substr: 获取字串
-
instr: 查询字串的起始位置
-
trim: 去除空白字符或者指定字符串,ltrim和rtrim分别去掉左边和右边的空白字符
-
upper: 转成大写
-
lower: 转成小写
-
lpad: 左边填充给定字符串,使之达到指定长度
-
rpad: 右边填充给定字符串,使之达到指定长度
-
replace: 字符串替换
-
repeat: 返回指定字符串重复N次的结果
-
reverse: 字符串反转
-
left/right: 返回指定字符串的左边/右边自定长度的字串
-
strcmp: 比较两个字符串大小(字典序),第一个小返回-1,第二个小返回1,一样返回0
-
char: 多个数字(ASCII码)转成字符,返回一个字符串
例子如下
SELECT
LENGTH("HELLO") AS LEN_OUTPUT,
CHAR_LENGTH("HELLO中国") AS CHAR_LENGTH_OUTPUT,
CONCAT("A","B","C") AS CONCAT_OUTPUT,
CONCAT_WS(",","A","B","C","D")AS CONCAT_WS_OUTPUT,
SUBSTR("HELLOWORLD", 6) AS SUBSTR_OUTPUT1,
SUBSTR('HELLOWORLD', 1, 5) AS SUBSTR_OUTPUT2,
INSTR('1234abc1234abc','ab') AS INSTR_OUTPUT,
TRIM(' abc ') AS TRIM_OUTPUT1,
TRIM('a' FROM 'aaaaaaabcaaaasaaaa')AS TRIM_OUTPUT2,
LTRIM(' abc ') AS LTRIM_OUTPUT,
RTRIM(' abc ') AS RTRIM_OUTPUT,
UPPER('hello world') AS UPPER_OUTPUT,
LOWER('HELLO WORLD') AS LOWER_OUTPUT,
LPAD("HELLO", 20, "ABC") AS LPAD_OUTPUT,
RPAD("HELLO",10, "ABC") AS RPAD_OUTPUT,
REPLACE("HELLO,WORLD", "O", "X") AS REPLACE_OUTPUT,
REPEAT("ABC",3) AS REPEAT_OUTPUT,
REVERSE("123456789") AS REVERSE_OUTPUT,
LEFT("123456789", 5) AS LEFT_OUTPUT,
RIGHT("123456789", 5) AS RIGHT_OUTPUT,
STRCMP("abc","abc") AS STRCMP_OUTPUT1,
STRCMP("abc","abcd") AS STRCMP_OUTPUT2,
STRCMP("abcd","abc") AS STRCMP_OUTPUT3,
CHAR(68,70,78) AS CHAR_OUTPUT
;
数学函数
-
abs: 求绝对值
-
sign: 根据参数的正负返回-1,0,1
-
round: 四舍五入,可以指定保留小数位
-
ceil/ceiling: 向上取整
-
floor: 向下取整
-
div:
5 DIV 2,5整除2,返回2 -
exp: 返回e的指定次方
-
ln/log: 返回数的自然对数,如果是log(x,y)则是返回y的x对数
-
log2/log10: 返回数的2/10对数
-
pow/power: pow(x,y)返回X的Y次幂
-
truncate: 截断几位小数
-
mod: 求模运算
-
sin/cos/tan/cot/acos/asin/atan: 三角/反三角函数
-
rand: 返回一个0-1之间的随机数,可以指定一个种子
例子如下:
SELECT
ABS(-10),
CEILING(1.23),
CEIL(1.23),
5 DIV 2,
LOG(3),
LOG(3,9),
LN(3),
LOG2(3),
LOG10(3),
POW(10,3),
POWER(10,3),
TRUNCATE(3.14159263766,2),
EXP(4),
rand(),
rand(4)
;
日期函数
-
now: 当前时间
-
curdate: 当前日期
-
curtime: 当前时间
-
year: 年
-
month: 月
-
day: 日
-
hour: 时
-
minute: 分
-
second: 秒
-
str_to_date: 字符串转日期
-
date_format: 日期格式化
%h:12小时制 %H:24小时制
%c:月份只有一位的时候使用如2020-1-02
%m:月份两位的时候使用,如2020-01-02
%y:两位年份
%Y:四位年份
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位
SELECT
now(),
curdate(),
curtime(),
year(now()),
month(now()),
day(now()),
hour(now()),
minute(now()),
second(now()),
STR_TO_DATE("2020120212:33:45","%Y%m%d%H:%i:%s"),
STR_TO_DATE("2020120212:33:45","%Y%m%d%h:%i:%s"),
DATE_FORMAT("2020-04-11 14:22:31","%h:%i:%s %Y%c%d")
;
控制函数
-
if
-
ifnull
-
case
例子如下:
SELECT
employee_id E_ID,
concat_ws(' ', first_name, last_name) FullName,
salary SALARY,
IF(salary > 20000, 'A', 'B') LEVEL,
IFNULL(commission_pct, 0) COMMISSION_PCT,
CASE department_id
WHEN 30 THEN salary * 1.1
WHEN 40 THEN salary * 1.2
WHEN 50 THEN salary * 1.3
ELSE salary
END NEW_SALARY,
CASE
WHEN salary > 20000 THEN 'A'
WHEN salary > 15000 THEN 'B'
WHEN salary > 10000 THEN 'C'
ELSE 'D'
END SALARY_LEVEL
FROM
employees
其他函数
-
version: MySQL版本
-
database: 当前使用的数据库
-
user: 当前用户
例子如下:
SELECT
VERSION(),
DATABASE(),
USER()
;
聚合函数
-
sum: 求和
-
avg: 平均值
-
min: 最小值
-
max: 最大值
-
count: 统计条数
分组函数忽略NULL。
SELECT
SUM(salary) SUM_SALARY,
AVG(salary) AVG_SALARY,
MIN(salary) MIN_SALARY,
MAX(salary) MAX_SALARY,
COUNT(salary) COUNT_SALARY
FROM
employee
;

浙公网安备 33010602011771号