mysql函数

# 字符串函数

# 拼接两个字符串 concat(字符串1, 字符串2)
select concat('123', '456'); # 123456

# 字符串中所有字符转小写 lower(字符串)
select lower('Hello'); # hello

# 字符串中所有字符转大写 upper(字符串)
select upper('Hello'); # HELLO

# 字符串向左侧补充长度 lpad(原字符串, 补充后的长度, 被补充的字符串)
select lpad('tx', 5, '0'); # 000tx

# 字符串向右侧补充长度 lpad(原字符串, 补充后的长度, 被补充的字符串)
select rpad('tx', 5, '0'); # tx000

# 清除字符串左右两侧的空格 trim(字符串)
select trim(' hello world! '); # 'hello world!'

# 字符串截取 substring(字符串, 起始位置, 长度)
# 注意:字符串下标是从 1 开始的
select substring('123456', 2, 4); # 2345


# 数值函数

# 向上取整 ceil(数值)
select ceil(12.01); # 13

# 向下取整 floor(数值)
select floor(12.9); # 12

# 两个数值相除取余 mod(数值1, 数值2)
# 相当于js 中的 数值1 % 数值2
select mod(10, 3); # 1

# 生成 0 - 1 之间的随机数
select rand();

# 四舍五入,并保留n位小数,默认n=0 round(数值, n)
select round(12.665, 2) # 12.67



# 日期函数

# 返回当前日期 curdate()
select curdate();

# 返回当前时间 curtime()
select curtime();

# 返回当前日期+时间
select now();

# 注意:格式 日期中必须存在完整的年月日,年月日连接符号可自定义,必须有
# 获取指定date的年份 year(date)
select year('2021/01<01 12:12:12');
# 获取指定date的月份 month(date)
select month('2021-01<01');
# 获取指定date的日期 day(date)
select day('2021-01<05');

# 返回一个日期/时间值加上一个时间间隔 expr 后的时间值
select date_add('2021-01-01', interval 4 year)

# 返回两个日期的间隔天数 datediff(起始时间, 结束时间)
# 注意:datediff 会用第一个日期减去第二个日期
select datediff(curdate(), '2021-01-01')



# 流程函数

# if(value, t, f) 如果value为真,则返回t,否则返回f
select names, if(age >= 18, '成年', '未成年') from person p ;


# ifnull(value1, value2) 如果value1不为空(null),则返回value1,否则返回value2
SELECT ifnull('abc', '123'); # abc
SELECT ifnull('', '123');     # ''
SELECT ifnull(null, '123');  # 123


# CASE WHEN 条件 THEN 值 ... elseend
# 满足 when条件则返回then值,否则继续往下执行,直到执行到end
select 
    *, (case when age < 18 then '少年' when age < 35 then '青年' when age < 60 then '中年' else '老年' end)
    from person p 

 

posted @ 2024-11-28 15:21  萧一下  阅读(1)  评论(0编辑  收藏  举报