一、数字函数
1).函数的写法:
1).测试函数时:select 函数名(常量值);
例如:abs(x):求x的绝对值
select abs(-1);
2).应用通常都是计算某个字段:select 函数名(字段名) from 表名;
例如:abx(字段名):求这个字段的所有值的绝对值
select abs(price) from product;
2).常用数字函数:
1).abs(x/字段名):求x/字段的绝对值;
示例:SELECT pname,ABS(price) FROM product;
2).ceil(x/字段名):将"x/字段"的值向上取整
示例:SELECT CEIL(3.4);
SELECT CEIL(3.8);
SELECT CEIL(price) FROM product;
3).floor(x/字段名):将"x/字段"的值向下取整
示例:SELECT FLOOR(3.4);
SELECT FLOOR(3.8);
SELECT FLOOR(price) FROM product;
4).rand():产生一个0-->1的随机数;
示例:SELECT RAND(); #每次运行都不一样
5).rand(x):根据x的值,经过固定的算法产生一个随机数。x的值固定,每次生成的随机数是一样的。
示例:SELECT RAND(12); #种子相同时,每次运行会得到相同的随机数
SELECT RAND(price) FROM product;#使用某字段的值做种子
6).sign(x/字段名):判断"x/字段"的值是正数、0、负数。"x/字段"是正数:返回1
"x/字段"的值是0:返回0
"x/字段"的值是负数:返回-1
示例:
SELECT SIGN(-12); #-1
SELECT SIGN(0); #0
SELECT SIGN(24); #1
SELECT SIGN(price) FROM product;
二、字符串函数
1).length(x/字段名):求"x/字段"的值的长度(注意:如果是U8编码,每个中文是3个长度)
示例:
SELECT LENGTH('abcdefg');
SELECT LENGTH(pname) FROM product;
2).concat(x1/字段1,x2/字段2,...,xn/字段n):将几个参数的值进行"字符串拼接":
示例:
SELECT CONCAT(pname,':',category_id,':',price) FROM product;
3).concat_ws(值/字段,x1/字段1,x2/字段2,...,xn/字段n):使用第一个参数做"分隔符"拼接后续的其它字符串/字段的值。
示例:
SELECT CONCAT_WS(':','aaa','bbb','ccc');
SELECT CONCAT_WS(':',pname,category_id,price) FROM product;
4).insert(s1,x,len,s2) : 将字符串s2替换s1的x位置开始长度为len的字符串
示例:
SELECT INSERT('jfkdja',1,12,'abc');
SELECT INSERT(pname,1,1,'*') FROM product;
5).left(s,n):返回字符串s的前n个字符
示例:
SELECT LEFT(pname,1) FROM product;
6).lpad(s1,len,s2):字符串s2来填充s1的开始处,使字符串长度达到len
示例:
SELECT LPAD('abc',0,'xx') -- xxabc
7).trim(s):去掉s两端的空格。
示例:
去掉字符串s开始和结尾处的空格
三、日期和时间函数
1).获取当前日期
示例:
INSERT INTO product VALUES(NULL,'宝马',28,NULL,CURDATE());
2).获取当前系统时间
示例:
SELECT CURTIME();
3).获取当前日期和时间
示例:
SELECT NOW();
4).获取日期中的月份值
示例:
SELECT * FROM product WHERE MONTH(prodate) = 9;
5).获取星期值
示例:
SELECT WEEKDAY(NOW());//0-星期一,1-星期二...
6).将"天"加上指定的值
示例:
SELECT ADDDATE('2017-10-01',-31)
7).格式化日期
示例:
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日 %h:%i:%s')
四、条件判断函数
1).if()函数:
示例:
SELECT IF(prodate > '2017-10-01' ,'早期','晚期') FROM product;
2).填充NULL:
示例:
SELECT IFNULL(category_id,'未填') FROM product;#如果category_id字段为null,使用第二个参数填充;否则显示category_id的原值;
3).多重判断:case语句
示例:#1000(不含)以下的打印:便宜;1000--3000(包含)打印:价格合理;高于3000元打印:贵
SELECT pname,CASE WHEN price < 1000 THEN '便宜'
WHEN price >= 1000 AND price <= 3000 THEN '价格合理'
WHEN price > 3000 THEN '贵'
ELSE '错误的价格'
END AS '价格' ,price FROM product;
4).判断一个表达式的多个可能的值的结果:
示例:
SELECT pname,CASE price
WHEN 1000 THEN '1千元'
WHEN 2000 THEN '2千元'
WHEN 3000 THEN '3千元'
WHEN 4000 THEN '4千元'
WHEN 5000 THEN '5千元'
ELSE '非整千价格'
END AS '判断',price FROM product;
五、系统信息函数
1).获取系统的版本号
示例:
SELECT VERSION();
2).返回服务器的连接ID
示例:
SELECT CONNECTION_ID();
3).返回当前数据库名
示例:
SELECT DATABASE();
4).返回当前用户
示例:
SELECT USER();
六、加密函数
1).password(str)函数:
示例:
SELECT PASSWORD(pname) FROM product;
2).MD5(str)函数:
示例:
SELECT MD5(pname) FROM product;
网友评论