环境准备
-- 用户表
CREATE TABLE t_user (
id int(11) NOT NULL AUTO_INCREMENT,
uname varchar(40) DEFAULT NULL,
age int(11) DEFAULT NULL,
sex int(11) DEFAULT NULL,
PRIMARY KEY (id)
);
insert into t_user values (null,'zs',18,1);
insert into t_user values (null,'ls',20,0);
insert into t_user values (null,'ww',23,1);
insert into t_user values (null,'zl',24,1);
insert into t_user values (null,'lq',15,0);
insert into t_user values (null,'hh',12,0);
insert into t_user values (null,'wzx',60,null);
insert into t_user values (null,'lb',null,null);
【一. if函数】
if(expr1,expr2,expr3)
说明: 如果 expr1 是TRUE,则 IF()的返回值为expr2; 否则返回值则为 expr3。if() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
示例
获取用户的姓名、性别,如果性别为1则显示1,否则显示0;要求使用if函数查询:
SELECT uname, IF(sex, 1, 0) FROM t_user;
【二 . ifnull函数】
语法
ifnull(expr1,expr2)
说明:假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。ifnull()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
示例
练习1:获取用户的姓名、性别,如果性别为null则显示为1;要求使用ifnull函数查询:
SELECT uname, IFNULL(sex, 1) FROM t_user;
【三. 函数的操作符函数】
concat(str1, str2, …)
字符串连接函数,可以将多个字符串进行连接
concat_ws(separator, str1, str2, …)
可以指定间隔符将多个字符串进行连接;
示例
使用concat函数显示出 你好,uname 的结果
SELECT CONCAT('你好,' , uname) FROM t_user;
使用concat_ws函数显示出 你好,uname 的结果
SELECT CONCAT_WS(',', '你好', uname) FROM t_user;
【四. 字符串大小写处理函数】
upper(str)
得到str的大写形式
lower(str)
得到str的小写形式
示例
将字符串 hello 转换为大写显示
SELECT UPPER('hello'); -- HELLO
将字符串 heLLo 转换为小写显示
SELECT LOWER('heLLo'); -- hello
【五 .移除空格函数】
可以对字符串进行按长度填充满、也可以移除空格符
函数或操作符
trim(str) 将str两边的空白符移除
示例
将用户id位8的用户的姓名的两边空白符移除
-- 表中数据是:' lb ', 使用trim后是: 'lb'
SELECT TRIM(uname) FROM t_user WHERE id = 8;
【 六. 子串函数】
字符串也可以按条件进行截取,主要有以下可以截取子串的函数;
substr()、substring()
获取子串:
1:substr(str, pos) 、substring(str, pos);
2:substr(str, pos, len)、substring(str, pos, len)
示例
获取 hello,world 从第二个字符开始的完整子串
SELECT SUBSTR("hello,world", 2); -- ello,world
示例2
获取 hello,world 从第二个字符开始但是长度为4的子串
SELECT SUBSTR("hello,world", 2, 4); -- ello
【七 .处理大小写的】
upper(str) 变大写
lower(str) 变小写
-
移除空格
trim(str);
-
截取字符串
substr(str, pos) str
要截取的字符串,pos从哪里开始截取;substr(str, pos, len)
str要截取的字符串,pos从哪里开始截取, len截取字符串的长度
【八 .时间日期函数】
current_date()
获取当前日期,如 2019-12-18
current_time()
获取当前时:分:秒,如:15:36:11
now()
获取当前的日期和时间,如:2019-12-18 15:37:17
示例1:
获取当前的日期
select cruuent_date();
示例2:
获取当前的时间(仅仅需要时分秒)
select current_time();
示例3:
获取当前时间(包含年月日时分秒)
select now();
【九 . 数值函数】
常见的数值相关函数如下表:
abs(x)
获取数值x的绝对值
ceil(x)
向上取整,获取不小于x的整数值
floor(x)
向下取整,获取不大于x的整数值
pow(x, y)
获取x的y次幂
rand()
获取一个0-1之间的随机浮点数
示例1:
获取 -12 的绝对值
select abs(-12);
示例2:
将 -11.2 向上取整
select ceil(-11.2);
示例3:
将 1.6 向下取整
select floor(1.6);
示例4:
获得2的32次幂的值
select pow(2, 32);
示例5:
获得一个在0-100之间的随机数
select rand()*100;