【MySQL系统学习专栏】- 内置函数


MySQL函数(经典收藏)

MySQL函数

MySQL数据库提供了很多函数包括:

  • 数学函数;
  • 字符串函数;
  • 日期和时间函数;
  • 条件判断函数;
  • 系统信息函数;
  • 加密函数;
  • 格式化函数;

一、数学函数

数学函数主要用于处理数字,包括整型、浮点数等。

img

二、字符串函数

字符串函数是MySQL中最常用的一类函数,字符串函数主要用于处理表中的字符串。

img

三、日期时间函数

MySQL的日期和时间函数主要用于处理日期时间。

img

四、条件判断函数

1、IF(expr,v1,v2)函数

如果表达式expr成立,返回结果v1;否则,返回结果v2。

SELECT IF(1 > 0,'正确','错误')    
->正确

2、IFNULL(v1,v2)函数

如果v1的值不为NULL,则返回v1,否则返回v2。

SELECT IFNULL(null,'Hello Word')
->Hello Word

3、CASE

语法1:

CASE 
  WHEN e1
  THEN v1
  WHEN e2
  THEN e2
  ...
  ELSE vn
END

CASE表示函数开始,END表示函数结束。如果e1成立,则返回v1,如果e2成立,则返回v2,当全部不成立则返回vn,而当有一个成立之后,后面的就不执行了。

SELECT CASE 
  WHEN 1 > 0
  THEN '1 > 0'
  WHEN 2 > 0
  THEN '2 > 0'
  ELSE '3 > 0'
  END
->1 > 0

语法2:

CASE expr 
  WHEN e1 THEN v1
  WHEN e1 THEN v1
  ...
  ELSE vn
END

如果表达式expr的值等于e1,返回v1;如果等于e2,则返回e2。否则返回vn。

SELECT CASE 1 
  WHEN 1 THEN '我是1'
  WHEN 2 THEN '我是2'
ELSE '你是谁'

五、系统信息函数

系统信息函数用来查询MySQL数据库的系统信息。

img

六、加密函数

加密函数是MySQL用来对数据进行加密的函数。

1、PASSWORD(str)

该函数可以对字符串str进行加密,一般情况下,PASSWORD(str)用于给用户的密码加密。

SELECT PASSWORD('123')
    ->*23AE809DDACAF96AF0FD78ED04B6A265E05AA257

2、MD5

MD5(str)函数可以对字符串str进行散列,可以用于一些普通的不需要解密的数据加密。

SELECT md5('123')
    ->202cb962ac59075b964b07152d234b70

3、ENCODE(str,pswd_str)与DECODE(crypt_str,pswd_str)

ENCODE函数可以使用加密密码pswd_str来加密字符串str,加密结果是二进制数,需要使用BLOB类型的字段保存。该函数与DECODE是一对,需要同样的密码才能够解密。

SELECT ENCODE('123','xxoo')
    ->;vx
SELECT DECODE(';vx','xxoo')
    ->123

七、其他函数

1、格式化函数FORMAT(x,n)

FORMAT(x,n)函数可以将数字x进行格式化,将x保留到小数点后n位。

SELECT FORMAT(3.1415926,3)
    ->3.142

2、不同进制的数字进行转换

  • ASCII(s) 返回字符串s的第一个字符的ASCII码;
  • BIN(x) 返回x的二进制编码;
  • HEX(x) 返回x的十六进制编码;
  • OCT(x) 返回x的八进制编码;
  • CONV(x,f1,f2) 返回f1进制数变成f2进制数;

3、IP地址与数字相互转换的函数

  • INET_ATON(IP)函数可以将IP地址转换为数字表示;IP值需要加上引号;
  • INET_NTOA(n)函数可以将数字n转换成IP形式。
SELECT INET_ATON('192.168.0.1')
    ->3232235521
SELECT INET_NTOA(3232235521)
    ->192.168.0.1

4、加锁函数和解锁函数

  • GET_LOCK(name,time)函数定义一个名称为nam、持续时间长度为time秒的锁。如果锁定成功,则返回1;如果尝试超时,则返回0;如果遇到错误,返回NULL。
  • RELEASE_LOCK(name)函数解除名称为name的锁。如果解锁成功,则返回1;如果尝试超时,返回0了如果解锁失败,返回NULL;
  • IS_FREE_LOCK(name)函数判断是否已使用名为name的锁定。如果使用,返回0,否则,返回1;
SELECT GET_LOCK('MySQL',10)
    ->1    (持续10)
SELECT IS_FREE_LOCK('MySQL')
    ->1    
SELECT RELEASE_LOCK('MySQL')
    ->1

5、重复执行指定操作的函数

BENCHMARK(count.expr)函数将表达式expr重复执行count此,然后返回执行时间。该函数可以用来判断MySQL处理表达式的速度。

SELECT BENCHMARK(10000,NOW())
    ->0    返回系统时间1

6、改变字符集的函数

CONVERT(s USING cs)函数将字符串s的字符集变成cs。

SELECT CHARSET('ABC')
    ->utf-8    
SELECT CHARSET(CONVERT('ABC' USING gbk))
    ->gbk

7、转换数据类型

  • CAST(x AS type)
  • CONVERT(x,type)

这两个函数只对BINARY、CHAR、DATE、DATETIME、TIME、SIGNED INTEGER、UNSIGNED INTEGER。

SELECT CAST('123' AS UNSIGNED INTEGER) + 1
    ->124
      
SELECT '123' + 1
    ->124 其实MySQL能默认转换

SELECT CAST(NOW() AS DATE)
  ->2014-12-18

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值