MySQL内置函数学习笔记

21次阅读
没有评论

共计 2887 个字符,预计需要花费 8 分钟才能阅读完成。

字符串相关

在 MySQL 中,字符串既可以使用双引号也可以使用单引号,但 建议使用单引号,因为单引号属于标准 SQL。

upper():转大写,转小写是 lower()

  • SELECT UPPER(‘abc’);
  • ABC

length():获取字节长度

  • SELECT LENGTH(‘ 张三 123’);
  • 9

char_length():获取字符个数

  • SELECT CHAR_LENGTH(‘ 张三 123’);
  • 5

concat():字符串拼接,MySQL8 之后,||只作为逻辑运算符使用,也不可以使用 + 进行字符串拼接

  • select concat(‘123’, ‘abc’);
  • 123abc

lpad():左填充,右填充为 rpad()

  • select lpad(‘abc’, 5, ‘-‘);
  • –abc

trim():去除首尾空白,也可去除指定的前缀后缀

  • select trim(‘ abc 123 ‘);
  • abc 123
  • select trim(leading ‘0’ from ‘000111000’); — 111000
  • select trim(trailing ‘0’ from ‘000111000’); — 000111
  • select trim(both ‘0’ from ‘000111000’); — 111

substr():截取字符串

  • select substr(‘abc123’, 2, 3);
  • bc1

数值相关

ceil():向上取整,向下取整是 floor()

  • select ceil(1.5); — 2

truncate():舍去

  • select TRUNCATE(6.666, 2); — 6.66

mod():取余

  • select mod(7, 4); — 3

round():四舍五入

  • select round(3.14159, 2); — 3.14

rand():0- 1 内随机浮点数,通过指定整数每次获取到相同的浮点值

  • select rand();
  • select rand(100);

日期时间相关

curdate():获取当前日期

  • select curdate(); — 2024-05-17

curtime():获取当前时间
— select curtime(); — 13:21:21

now():执行 select 语句的时刻。sysdate()获取的是执行 sysdate()函数的时刻。

  • select now();

year():获取年,月 month(),日 day(),时 hour(),分 minute(),秒 second()

  • select year(now()); — 2024

dayofweek():一周中第几天(1~7),周日是 1,周六是 7。dayofmonth()一个月中第几天(1~31),dayofyear()一年中第几天(1~366)

  • select dayofweek(now()); — 6 周五

last_day():获取给定日期所在月最后一天日期

  • select last_day(NOW()); — 2024-05-31

date():一次性提取一个给定日期的“年月日”部分,一次性提取一个给定日期的“时分秒”部分使用 time()

  • select date(NOW()); — 2024-05-17
  • select time(NOW()); — 11:30:10

date_add():向日期添加指定的时间间隔。date_add(日期, interval expr 单位):

  • expr:指定具体间隔量,一般是一个数字。也可以为负数,如果为负数,效果和 date_sub 函数相同
  • 单位:year 年、month 月、day 日、hour 时、minute 分、second 秒、microsecond 微秒、week 周、quarter 季度
  • select date_add(now(), interval 3 day); — 2024-05-20 11:32:25
  • 单位也可以采用复合型单位,例如:SECOND_MICROSECOND、MINUTE_MICROSECOND、MINUTE_SECOND 几分几秒之后、HOUR_MICROSECOND、HOUR_SECOND、HOUR_MINUTE 几小时几分之后、DAY_MICROSECOND、DAY_SECOND、DAY_MINUTE、DAY_HOUR 几天几小时之后、YEAR_MONTH 几年几个月之后
  • select date_add(now(), INTERVAL ‘3,2’ day_hour); — 3 天 2 小时之后

datediff():两个日期之间所差天数

  • select datediff(now(), ‘2024-05-10’); — 7

timediff():两个日期之间所差时间

  • select timediff(‘2024-05-10 10:10:10’, ‘2024-05-10 10:00:00’); — 00:10:10

date_format():日期格式化,默认日期格式:%Y-%m-%d %H:%i:%s,%y 两位年份,%h 是 12 小时制

  • select date_format(NOW(), ‘%Y-%m-%d %H:%i:%s’); — 2024-05-17 12:28:05

str_to_date():将 char 类型日期字符串转换成日期类型 date

  • select str_to_date(’10/01/1985′, ‘%m/%d/%Y’); — 1985-10-01

流程函数

if()

  • select if(true, ‘ok’, ‘no ok’); — ok

ifnull(x, y):空处理函数,当 x 为 NULL 时,将 x 当做 y 处理。有 NULL 参与的数学运算,最终结果都是 NULL,此时就需要 ifnull 函数进行空处理

  • select ifnull(null, ‘ 是 null’); — 是 null

case

  • select name, case gender when ‘ 男 ’ then 1 when ‘ 女 ’ then 2 else ‘ 变态 ’ end as ‘ 性别 ’ from user;
  • select name, case when gender=’ 男 ’ then 1 when gender=’ 女 ’ then 2 else ‘ 变态 ’ end as ‘ 性别 ’ from user;

cast 函数

用于将值从一种数据类型转换为另一种数据类型,语法:cast(值 as 数据类型)。

  • select cast(‘2020-10-11’ as DATE);

加密函数

md5()将给定字符串经过 md5 算法进行加密处理,生成一个固定长度 32 位字符串

  • select md5(‘abc’);

分组函数

分组函数执行原则:先分组,然后对每一组数据执行分组函数。如果没有分组语句 group by 的话,整张表的数据自成一组。所有分组函数都是自动忽略 NULL 的。

substring_index()

  • select substring_index(‘ab-c-de-fg’, ‘-‘, 1); — ab
  • select substring_index(‘ab-c-de-fg’, ‘-‘, 2); — ab-c

group_concat():行转列,默认逗号分隔

  • select group_concat(user separator ‘-‘) from mysql.user; — 按 - 分隔
  • select group_concat(user order by id desc) from mysql.user;
正文完
post-qrcode
 0
三毛
版权声明:本站原创文章,由 三毛 于2024-05-17发表,共计2887字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)