DQL常用单行函数介绍
字符函数
length: 返回长度(使用的是utf-8编码,一个中文占用3个字节大小)
SELECT
LENGTH('JOHN') AS LENGTH;
SELECT
LENGTH('周') AS LENGTH;
PS:在utf-8中,中文占用的字节数是3个字节,但是在GBK编码中中文占用2个字节
concat:用于拼接字符串
select
concat('john','_','zhou')
Upper函数和Lower函数:转为大写或者小写
SELECT
UPPER('john')
SELECT
LOWER('JOHN')
SUBSTR(SUBSTRING):截取
# 截取从索引6开始,索引是1开始而不是0开始
SELECT
SUBSTR("我是最帅的我真帅",6)
# 第三个参数表示的是截取的长度
SELECT
SUBSTR("我是最帅的我真帅",6,1)
# 下面代码的效果和第二个相同,上面的函数名是简写
SELECT
SUBSTRING("我是最帅的我真帅",6,1)
PS:mysql中的索引是从一开始的,而不是从0开始的。
INSTR函数:返回子串在大的字符串中起始索引,如果有多个返回第一个,如果没有返回0,PS:Mysql索引是从1开始的
SELECT
INSTR('我是最帅的我真帅','帅')
SELECT
INSTR('我是最帅的我真帅','你')
TRIM函数:传入一个字符串,去掉两边的指定字符(如果没有指定,默认去掉空格)
SELECT TRIM(' 我好帅 ')
SELECT TRIM('a' FROM 'aaaa我好帅aaaa')
LPAD(RPAD):左边(右边)填充指定的字符串到指定的长度,PS:如果指定传入的字符串长度比指定的长度小,则会发生截取,如果填充的字符串太长,也会发生截取,RPAD是右边填充
SELECT LPAD('帅',3,'我好')
# 下面代码和上面的代码效果相同,都是输出我好帅
SELECT LPAD('帅',3,'我好好好好好好')
# 下面的代码发生的截取截取源字符串的前三个
SELECT LPAD('我好好好好好好',3,'帅')
REPLACE函数:传入三个参数,第一个参数是原字符串,第二个参数是需要替换的字符串,第三个参数是需要替换为什么字符串
# 最后多出来一个*
SELECT REPLACE('你个*****','**','帅哥')
数学函数
ROUND函数:四舍五入
SELECT ROUND(1.1)
CEIL函数:向上取整
SELECT CEIL(1.1)
Floor函数: 向下取整
SELECT FLOOR(1.1)
TRUNCATE函数: 小数点后截断,第一个参数传递的是需要截断的数值,第二参数是截断的位数
SELECT TRUNCATE(1.65,1)
MOD函数: 取余,
SELECT MOD(10,3) # 结果为1
SELECT MOD(-10,3) # 结果为-1
SELECT MOD(-10,-3) # 结果为-1
SELECT MOD(10,-3) # 结果为1
分析:对于10/3 来说整数部分为3,余数为1,-10/3整数的部分为-3,那么我们得到-9,那么还少-1,所以余数为-1,对于-10/-3,我们得到整数部分为3得到-9,还少-1,那么余数就是-1
日期函数
Now():返回当前的日期+时间
SELECT NOW()
CURDATE:返回当前的日期
SELECT CURDATE()
CURTIME:返回当前的时间
SELECT CURTIME()
获取年月日等
SELECT YEAR(NOW())
SELECT MONTH(NOW())
SELECT DAY(NOW())
SELECT HOUR(NOW())
SELECT MINUTE(NOW())
SELECT SECOND(NOW())
STR_TO_DATE函数:string转化为data(按照格式将string转化为date)
SELECT STR_TO_DATE('1998年3月2日','%Y年%c月%d日')
%Y | 四位年份 |
---|---|
%y | 2位年份 |
%m | 月份(1月为01) |
%c | 月份(1月为1) |
%d | 日 |
%H | 小时24小时制 |
%h | 小时12小时制 |
%i | 分钟 |
%s | 秒 |
DATE_FORMAT函数:将date格式化为字符串
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日')
流程控制函数
IF函数
SELECT IF(10>5,'我很帅','我真帅')
CASE函数
# 第一种用法
SELECT
CASE 10/2
WHEN 5 THEN 5 # 注意如果这边是表达式需要加;
WHEN 2 THEN 2 # 注意如果这边是表达式需要加;
ELSE 3
END AS res
# 第二种用法
SELECT
CASE
WHEN 10<5 THEN '10<5'
WHEN 10>15 THEN '10>15'
ELSE 'false'
END
PS:一般我们需要加别名
# 加了别名后的语句
SELECT
CASE
WHEN 10<5 THEN '10<5'
WHEN 10>15 THEN '10>15'
ELSE 'false'
END AS RES
其他函数
version:查看版本
SELECT VERSION()
DATABASE:查看当前的数据库
SELECT DATABASE()
USER: 查看当前用户
SELECT USER()