mysql常用函数积累

文章目录

  1. 1. 时间处理
  2. 2. 字符串处理

时间处理

  • FROM_UNIXTIME

    1
    2
    UNIX时间戳转换为日期用函数:
    select FROM_UNIXTIME(1156219870);
  • UNIX_TIMESTAMP

    1
    2
    日期转换为UNIX时间戳用函数:
    select UNIX_TIMESTAMP('2006-11-04 12:23:00');
  • date_format

    1
    2
    查询当天的记录数:
    DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m-%d') = curdate()
  • N天内记录

    1
    select *  from table_name where datediff(curdate(),from_unixtime(timestamp_colname,'%Y-%m-%d'))>=N;

    字符串处理

  • IF

    1
    IF(expr,val1,val2) #判断expr,为真则val1,否则val2
  • IFNULL

    1
    select IFNULL(expr1,expr2) #非expr1则expr2
  • ISNULL

    1
    select ISNULL(null)
  • MID

    1
    2
    截取字符串
    select MID(expr1,start,length) #start从0开始
  • LOCATE

    1
    2
    判断字符位置
    select LOCATE('ab','efgabc'[,pos]) #返回字符位置,从1开始,未找到返回0;pos参数可提供需要越过的查找offset
  • INSTR

    1
    2
    判断字符位置,参数与LOCATE相反,无pos参数
    select INSTR('efgabc''ab')
  • concat & concat_ws

    1
    2
    concat(str1,str2,[str3]...)
    concat_ws(separator,str1,str2,[str3])
  • group_concat

    1
    2
    3
    4
    5
    6
    7
    8
    列转行,默认,号分隔
    group_concat(name separator ';') #指定分隔符
    group_concat(name order by name desc) #指定排序

    #这里有个坑,默认返回是有长度限制的,一般是1024
    show variables like "group_concat_max_len";
    #按需调整,当前生效
    set GLOBAL group_concat_max_len=2048;
  • ELT

    1
    2
    3
    根据N的值选择第N个字符串
    ELT(N,str1,str2,str3,...)
    eg: select elt(1,'男','女'); #枚举性别
  • FIND_IN_SET

    1
    2
    3
    4
    5
    6
    7
    8
    FIND_IN_SET(str,strlist)
    eg1:in和FILD_IN_SET() 的区别

    select id, list, name from table where FIND_IN_SET( 'daodao' , list)
    所以如果list是常量(如:('libk', 'zyfon', 'daodao')),则可以直接用IN, 否则要用FIND_IN_SET()函数

    eg2:按in排序
    select * from article where id in(1,5,3) ORDER BY FIND_IN_SET('id','1,5,3');
  • QUOTE

    1
    安全转义
  • trim

    1
    2
    3
    4
    5
    6
    7
    8
    mysql> SELECT TRIM('  bar   ');
    -> 'bar'
    mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
    -> 'barxxx'
    mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
    -> 'bar'
    mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
    -> 'barx'

    未完待续。。。

如有疑问,请文末留言交流或邮件:newbvirgil@gmail.com 本文链接 : https://newbmiao.github.io/2015/09/23/mysql-common-function-accumulation.html