MySQL的内置函数

tech2024-05-19  67

数学函数

abs :返回x的绝对自豪

ceil(x),ceilin(x):返回不小于x的最小整数

select ceil(30000.3);

floor:返回不大于x的最大整数值

select floor(3000.3); ``` rand(x): 返回0~1的随机数,x值相同时返回随机数相同 sign(x):返回参数作为-101的符号,该符号取决于x的值为负、零或正 pi: **truncate(x,y)**:返回数值x保留到小数点后y位的值 ````sql select truncate(30000.34567,3); ``` round(x):返回离x最近的整数 ```sql select round(3000.3); ``` **round(x,y)**:返回数值x保留小数点后y位的值,但要四舍五入 ```sql select Round(3000.3456,4); ``` ## 常用字符串函数 char_length(s)**:返回字符串s 的字符数 **length(s)**:返回字符串s 的长度,单位为字节 **concat(s1,s2)**:返回结果为连接参数产生的字符串 **left(s,n)**:从字符串s开始的前n个字符 **right(s,n)**:从字符串s开始,返回右边的n个字符 ````sql #将身份证号的中间几位进行加密 select insert(身份证号码,3,8,'******'); ``` Trim(s)**:把字符串开始和结尾处的去掉 **subString(s,n,len)**:获取从字符串s中的第n个位置开始长度为len的字符串 **replace(s,s1,s2)**:用字符串s2替换s字符串s中的字符串s1 ``sql select姓名,身份证号 from 员工 where subString('身份证号码',3,1)=5; ``` **locate(s1,s)**:从字符串s获取s1的开始位置 ```sql select loginname,username,email from easybuy_user where instr(email,'@')=1 and instr(email,'@') is null and right(email,1)!='@';

insert(s1,x,len,s2):将字符串s2替换s1的位置x开始长度为len的字符串 upper 将字符串s的所有字母都编程大写字母 lower 将字符串s的所有字母都变成小写字母

日期时间函数

now():返回当前日期和时间

Month() : 返回日期d中的月份

year() 返回当前的年份

day() 返回当前的日期

dayname() 返回当前日期是星期几

week(d) 返回当前日期是本年的第几个星期

dayofmonth() 返回今天是本月中的第几天

quarter() 返回本月是本年的第几个季度

datediff(d1,d2) 计算日期之间相隔的天数

adddate(d,n) 计算起使日期加上n天的日期

adddate(a.interval expr type) 计算起使日期d加上一个时间段后的日期

subdate() 计算从起使日期d减去n天后的日期

timestampdiff(timetype,d1,d2) 计算时间相差的单位

加密函数

MD5加密

一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。主要增强算法复杂度和不可逆性。

MD5 不可逆,但是具体的简单值的 md5 是一样的MD5 破解网站的原理,背后有一个字典对照 -- =========测试MD5 加密======= CREATE TABLE `testmd5`( `id` INT(4) NOT NULL, `name` VARCHAR(20) NOT NULL, `pwd` VARCHAR(50) NOT NULL, PRIMARY KEY(`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8; -- 明文密码 INSERT INTO testmd5 VALUES(1,'zhangsan','123456'),(2,'lisi','123456'),(3,'wangwu','123456'); -- 加密 UPDATE testmd5 SET pwd=MD5(pwd) WHERE id = 1; UPDATE testmd5 SET pwd=MD5(pwd) -- 加密全部的密码; -- 插入的时候加密 INSERT INTO testmd5 VALUES(4,'xiaoming',MD5('123456')); -- 如何校验:将用户传递进来的密码,进行md5加密,然后比对加密后的值 SELECT * FROM testmd5 WHERE `name`='xiaoming' AND pwd=MD5('123456');

转换函数

format(x,y) 将数字进行格式化,将x保留到小数点后n位 ascii(s) 返回字符串s的第一个字符的ascii码 conv(x,f1,f2) 将x从f1进制数变成f2进制数 ** inet_ation(ip)** 可以将IP地址转换成数字表示 inet_ntoa(n) 可以将数字n转换成ip的形式

cast 可以用来改变类型,用case和convent()函式 两个函式相同,但是不同的语法工构造 cast(expression as type)

convert cast(expression type) case()式依照ansii的规格,convent()是依照ODBC的规则,类型可以是binary,char,date,datetime,通常MySQL会帮你自动改变类型。

条件函数

if(expr,v1,v2) 如果表达式成立。则执行,否则执行其他

ifnull(expr,v1,v2)

如果条件1不为空,就显示条件1,否则显示条件2

case when expr then v1 [when expr2 then v2....][else wn] end:case表示函数开始,end表示函数结束 case expr when e1 then v1 [when e2 then v2....] [else wn] end:case表示函数开始,end表示函数结束

系统信息函数

version 获取数据库版本号 connection_id 获取服务器的连接号 database() 获取当前数据库名 user(),system_suer(),session_suer() 获取当前用户 ** current_user()** 获取当前用户 ** charset(str)** 获取字符串的str字符集 collation(str) 获取字符串str的字符排序方式 last_insert_id() 获取最近生成的zuto_increment值

最新回复(0)