01.mysql常用函数

1、通配符

% 匹配多个字符,_ 匹配一个字符

使用通配符%,尽量不要把它们用在搜索模式的开始处。如('%fdf')

2、REGEXP

正则表达式匹配。默认不区分大小写。

REGEXP与LIKE的区别:

  • like匹配整个列值,如果别匹配的整个文本在列值中出现,将不会找到它。

  • regexp在列值内进行匹配。如果像like一样,可以使用^和$定位符。

  • 如果需要区分大小写可以使用REGEXP BINARY

    mysql转义使用\\两个反斜杠(mysql自己解释一个,正则表达式库解释另外一个)

3、mysql常用函数

3.1 文本处理函数

  • concat 列拼接
  • rtrim 去掉右边的所有空格
  • ltrim 去掉左边的所有空格
  • trim 去掉左右两边的空格
  • upper 文本转为大写
  • lower 文本转小写
  • left(str,length) 返回具有指定长度的字符串的左边部分
  • right(str,length) 返回具有指定长度的字符串的右边部分
  • length(str)返回字符串长度
  • locate(substr,str)substr在str中出现的位置。包含>0,不包含=0
  • soundex(str)类似的发音字符和音节,能对文本串进行发音比较而不是字母比较
  • substring从字符串中提取子字符串,pos从1开始提取
    • substring(str,pos)
    • substring(str from pos)
    • substring(str,pos,len)
    • substring(str from pos for len)

3.2日期和时间处理函数

select cust_id,order_num from orders where order_date = '2005-09-01'
order_date的数据类型为datetime。这种类型存储日期和时间值。
当order_date为2005-09-01 11:30:05是无法检索出来的。
只能检索出2005-09-01 00:00:00。
可以使用date()函数只比较日期即可。
  • now() 返回数据库所在时间
  • curdate()返回当前日期
  • curtime返回当前时间
  • date(date)返回日期时间的日期部分如:2020-04-04
  • time(date)返回日期时间的时间部分如:23:53:26
  • year(date)返回日期时间的年份部分如:2020
  • month(date)返回日期时间的月份部分如:4
  • day(date)返回日期时间的天数部分如:4
  • hour(date)返回日期时间的小时部分如:23
  • minute(date)返回日期时间的分钟部分如:51
  • second(date)返回日期时间的秒部分如:33
  • date_add(date,INTERVAL expr type)与addDate(date,INTERVAL expr type)相同。
  • date_sub(date,INTERVAL expr type)与subdate(date,INTERVAL expr type)相同。
    • 当erpr为负值,相当于date_add
  • addtime(expr1,expr2)添加到expr2 到 expr1 并返回结果
    • 如:select addtime(now(),'10:30:30') from dual;
    • 当expr2为-如:select addtime(now(),'-10:30:30') from dual;相当于subtime
  • subtime(expr1,expr2)expr1减去expr2并返回结果
    • select subtime(now(),'10:30:30') from dual;
    • 当expr2为-如:select subtime(now(),'-10:30:30') from dual;;相当于addtime
  • datediff
  • date_format(date,formate)用于以不同的格式显示日期/时间数据
    • %Y年,4位
    • %y年,2位
    • %M ,月名(April)
    • %m ,月,数值(00-12)
    • %D ,带有英文前缀的月中的天(5th)
    • %d ,月的天,数值(00-31)
    • %e ,月的天,数值(0-31)
    • %H ,小时 (00-23)
    • %h ,小时 (01-12)
    • %i ,分钟数值(00-59)
    • %S ,秒(00-59)
    • %s ,秒(00-59)
    • %T ,时间, 24-小时 (hh:mm:ss)
  • str_to_date('2020-03-20 16:01:45', '%Y-%m-%d %H:%i:%s')字符串转时间

3.3数值处理函数

  • rand()返回0-1的随机数
    • rand(1)与rand(20)每次分别返回两个固定数值,在0-1之间
  • round四舍五入函数
    • round(数值)同round(数值,0)只保留整数,四舍五入
    • round(数值,参数)
      • 如果参数的值为正数,表示保留几位小数。round(45.926,2) 为45.93,round(45.926,1)为45.9
      • 如果参数的值为负数,表示对小数点前第几位进行四舍五入。round(51.926,-1)为50,round(51.926,-2)为100
  • ceil(数值):向上取整
    • ceil(99.1)为100,ceil(-99.1)为-99
  • floor(数值):向下取整
    • floor(99.1)为99,floor(-99.1)为-100
  • abs(x):返回 x 的绝对值
  • truncate(X,D):将数字X截断到指定的小数位数D(不四舍五入)
    • truncate(89.985,2)为89.98
    • truncate(89.985,4)为89.9850当D大于实际小数位是会补0

3.4字符串转数字(空字符为0)

  • SELECT '123'+0
  • CAST(value as type);CONVERT(value, type);
    • type为signed,unsigned,decimal
    • decimal默认不保留精度。
    • 保留精度可以使用demical(M,D)**函数采取四舍五入的方式,保留小数位数.

3.5数字转字符串

  • concat(99,780,'')
  • cast(44.7686 as char)

3.5函数判断空值

  • ISNULL()函数仅仅是用于判断空值的,接受一个参数并返回一个布尔值。存在返回0,不存在返回1
  • IFNULL(v1, v2)如果第一个参数不是NULL,则返回第一个参数;否则,将返回第二个参数。
  • NULLIF(expr1,expr2)。如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1。这和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同

3.6条件判断

  • IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值。否则返回expr3

    • select IF(age<4,'小朋友','大朋友') from tb_user;
      
  • IF ELSE用于存储过程与函数。

    IF age<2 THEN '小朋友'
    ELSEIF age<4 THEN '中朋友'
    ELSE '大朋友'
    END IF
    
  • CASE WHEN

    • SELECT *,
      (CASE 
      WHEN age<2 THEN '小朋友'
      WHEN age<4 THEN'中朋友'
      ELSE '大朋友'
      END) as descp
      FROM tb_user;
      
    • SELECT *,
      (CASE sex
      WHEN 0 THEN '男'
      WHEN 1 THEN'女'
      ELSE '其他'
      END) as '性别'
      FROM tb_user;
      
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容