MySQL函数
大家好,我是小冷。
上一篇写了日期和时间函数有例子,地址是:日期和时间函数
条件判断函数
条件判断函数也称为控制流程函数,根据满足的条件的不同执行相应的流程。MySQL中进行条件判断的函数有IF、IFNULL和CASE。本节将分别介绍各个函数的用法。
IF(expr,v1,v2)函数
IF(expr, v1, v2)中,若表达式expr是TRUE(expr<> 0 and expr<> NULL),则IF()的返回值为v1;否则返回值为v2。IF()的返回值为数字或字符串,具体情况视其所在语境而定。
1>2的结果为FALSE,SELECT IF(1>2,2,3) 返回第2个表达式的值;1<2的结果为TRUE,IF(1<2,‘yes ‘,‘no‘)返回第一个表达式的值;“test”小于“test1”,结果为true, IF(STRCMP(‘test‘,‘test1‘),‘no‘,‘yes‘)返回第一个表达式的值。
IFNULL(v1,v2)函数
IFNULL(v1,v2)中,若v1不为NULL,则IFNULL()的返回值为v1;否则其返回值为v2。IFNULL()的返回值是数字或字符串,具体情况取决于其所在的语境。
IFNULL(1,2)虽然第二个值也不为空,但返回结果依然是第一个值;
IFNULL(NULL,9)第一个值为空,因此返回9; “1/0”的结果为空,因此IFNULL(1/0, ‘wrong‘)返回字符串“wrong”。
CASE函数
CASE expr
WHEN v1 THEN r1
WHEN v2 THEN r2
....
ELSE rn END
该函数表示,若expr值等于某个值,则返回对应位置THEN后面的结果;若与所有值都不相等,则返回ELSE后面的rn。
CASE后面的值为2,与第二条分支语句WHEN后面的值相等,因此返回结果为“90”。
一个CASE表达式的默认返回值类型是任何返回值的相容集合类型,但具体情况视其所在语境而定。
如果用在字符串语境中,那么返回结果为字符串;如果用在数字语境中,那么返回结果为十进制值、实数值或整数值。
系统信息函数
系统信息函数,MySQL中的系统信息有数据库的版本号、当前用户名和连接数、系统字符集、最后一个自动生成的ID值等。
获取MySQL版本号、连接数和数据库名的函数
VERSION()返回指示MySQL服务器版本的字符串。这个字符串使用utf8字符集。CONNECTION_ID()返回MySQL服务器当前连接的次数,每个连接都有各自唯一的ID。
若是root账号,则能看到所有用户的当前连接。若是其他普通账号,则只能看到自己占用的连接。SHOW PROCESSLIST;
只列出前100条,若想全部列出,则可使用SHOW FULL PROCESSLIST命令。
说几列函数和用途
- Time列,显示这个状态持续的时间,单位是秒。
- State列,显示使用当前连接的SQL语句的状态,很重要的列,后续会有所有状态的描述,State只是语句执行中的某一个状态。一个SQL语句(以查询为例)可能需要经过Copying to tmp table、Sorting result、Sending data等状态才可以完成。
- Info列,显示这个SQL语句是判断问题语句的一个重要依据。
获取用户名的函数
USER()、CURRENT_USER、CURRENT_USER()、SYSTEM_USER()和SESSION_USER()这几个函数返回当前被MySQL服务器验证的用户名和主机名组合。这个值符合确定当前登录用户存取权限的MySQL账户。一般情况下,这几个函数的返回值是相同的。
返回结果值指示了当前账户连接服务器时的用户名及所连接的客户主机,root为当前登录的用户名,localhost为登录的主机名。
获取字符串的字符集和排序方式的函数
CHARSET(str)返回字符串str自变量的字符集。
可以看到 CHARSET(‘小冷coding‘)返回系统默认的字符集utf8mb4
COLLATION(str)返回字符串str的字符排列方式是utf8mb4_general_ci。
获取最后一个自动生成的ID值的函数
LAST_INSERT_ID()自动返回最后一个INSERT或UPDATE为AUTO_INCREMENT列设置的第一个发生的值。LAST_INSERT_ID是与数据表无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的Id值。
还有很多函数,比如加密函数,解密函数,格式化函数…等等都值得我们去实操看看了
写到最后
小冷一直在技术路上前行…你的关注,评论,收藏都是对我的支持。
昨天,删去;今天,争取;明天,努力。