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
;
posted @ 2020-12-10 16:30  chdaring  阅读(37)  评论(0)    收藏  举报