这一章节主要谈谈SQL常用函数
一、求余函数MOD(x,y)
MOD(x,y) 返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,它返回除数后的精确余数。
例子
1.被除数和除数都是整数
2.被除数或者除数带有相同位数小数
3.被除数和除数带有不同位数小数,返回小数位数以除数为准
二、四舍五入函数ROUND(x,y) 和 截取小数点后n位函数TRUNCATE(x,y)
TRUNCATE(x,y) 返回被舍去至小数点后y位的数字x;若y的值为0,则结果不带小数部分。
1.小数点后0位
2.小数点后1位
ROUND(x,y) 返回被舍去至小数点后y位的数字x,x会四舍五入;若y的值为0,则结果不带小数部分,结果还是会四舍五入。
1.不带小数的四舍五入,四舍
2.不带小数的四舍五入,五入
3.带一位小数的五入
备注:8.36带一位小数四舍五入,0.06>=0.05,所以五入。
4.带一位小数的四舍
三、十六进制函数HEX(N_or_S)与反十六进制函数UNHEX(str)
1.对字符串进行十六进制编码
2.对十六进制进行反码
四、字符串函数
1.CHAR_LENGTH(str) 返回字符串str所包含的字符个数。
2.CONCAT(str1,str2,...) 字符串拼接函数
3.字符串替换函数 INSERT (str,pos,len,newstr)
将字符串str中pos位置(从1开始计算)开始,长度为len的字符串用newstr代替
4.字符串代替函数 REPLACE(str,from_str,to_str)
REPLACE(源字符串,需要替换的字符串,替换成的值)
5.字符串填充函数 LPAD(str,len,padstr) 和 RPAD(str,len,padstr)
LPAD(源字符串,填充后字符串总长度,填充字符串),padstr填充到str的左边去,如果str的个数大于len,则返回拼接后len长度字符串。
RPAD(str,len,padstr),即向右拼接字符串
6.删除空格(或指定字符)的函数 TRIM([remstr FROM] str)
TRIM(str) 删除字符串str两侧的空格,字符串中间的空格不能删除。
//不能删除字符串中间的空格
TRIM('removeStr' FROM str) 删除str中前面或者后面为removeStr的字符串,中间的不能删除,默认时删除空格。
7.重复生成字符串函数 REPEAT (str,count)
REPEAT (需要重复的字符串,重复次数)
8.字符串比较大小函数 STRCMP(expr1,expr2)
五、日期和时间函数
1.获取当期日期和当前时间的函数
如上都是获取日期和时间的函数,我常用的是 sysdate。
2.如下都是时间函数
#查询年
SELECT YEAR(SYSDATE());
#查询月份数字
SELECT MONTH(SYSDATE());
#查询月份英文
SELECT MONTHNAME(SYSDATE());
#查询的是几号
SELECT DAY(SYSDATE());
#查询的是星期
SELECT DAYNAME(SYSDATE());
#查询现在的小时
SELECT HOUR(SYSDATE())
#查询现在的分钟
SELECT MINUTE(SYSDATE());
#查询现在的秒数
SELECT SECOND(SYSDATE());
#时间转换为秒钟
SELECT TIME_TO_SEC(SYSDATE());
#秒钟转换为时间
SELECT SEC_TO_TIME(65393)
#日期格式化 http://www.w3school.com.cn/sql/func_date_format.asp
SELECT DATE_FORMAT(SYSDATE(),'%Y%m%d')
#时间格式化
SELECT TIME_FORMAT(SYSDATE(),'%H%i%s')
六、条件判断函数
常用的条件判断函数有if、ifnull、case
1.IF(expr1,expr2,expr3)函数,如果表达式expr1是true,则F()返回值为expr2;否则返回表达式expr3。
2.IFNULL(expr1,expr2)函数,如果expr1不为null,则f()返回值为expr1;否则返回expr2。
3.case函数
case when expr1 then value1 else value2 end
当expr1成立时,结果为value1;否则结果为value2
七、信息系统函数
1.获取mysql版本号
2.获取mysql服务器的连接次数
备注:该返回值为到现在为止mysql服务器的连接次数,每个连接都有自己唯一的ID。
3.查询数据库名称
八、加密函数
1.PASSWORD(str)
password加密后的数据长度是41位,且以*开头,可用select length(password('lixianli'))察看。password函数加密不可逆。它主要用于密码加密。但是这种生成密码的方法依赖数据库,而且需要连接数据库,有网络开销。通常还用MD5的方法 做明码的加密。
2.MD5(str)
MD5为字符串计算出一个128比特校验和。该值以32位十六进制的二进制字符串形式返回。此加密算法不可逆。其实md5算法是信息摘要算法,如果拿来做压缩也是有损压缩,理论上即使有反向算法也无法恢复信息原样。他常被用来检验下载数据的完整性。如好多软件都提供md5码,供用户下载完毕校验完整性。
3.加密和解密函数
ENCODE(str,pass_str) 和 DECODE(crypt_str,pass_str)
ENCODE(str,pass_str) 使用pass_str作为密码,加密str。加密结果是二进制数,需要使用BLOB类型的字段保存。
DECODE(crypt_str,pass_str) 使用pass_str作为密码,解密crypt_str。解密结果就是经过encode加密之前的str。
4.格式化函数
FORMAT(X,D) 将数字x格式化,并以四舍五入的方式保留小数点后n位。
5.不同进制的数字转换函数
CONV(N,from_base,to_base) n为需要转换的数,from_base为源转换进制,to_base为目的转换进制。
6.返回不同的进制
7.IP地址与数字相互转换函数
如上,当要存储ip到数据库时,可以现将其转换成数字,再存入数据库,取出来的时候,可以再转换成ip。
8.重复执行指定操作的函数 BENCHMARK(count,expr)
该函数重复count次执行表达式expr,它常用于计算MYSQL处理表达式的速度。
结果值通常为0,0表示处理速度很快。
举例子说明
由上可以看出,PASSWORD('lixianli & panda')被执行0次的时间是0.000s;被执行10000次的时间是0.016s。
自此,mysql的函数部分介绍完毕。