MySQL的内置函数

数学函数

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农先生eee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值