博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySql 常用函数
阅读量:7126 次
发布时间:2019-06-28

本文共 6276 字,大约阅读时间需要 20 分钟。

hot3.png

一、字符串函数

contact(s1,s2,s3...) :  把传入的参数连接成字符串

mysql> select  concat('a','b','c');
+---------------------+
| concat('a','b','c') |
+---------------------+
| abc                 |
+---------------------+

任何字符串和 null 拼接结果都是 null 

mysql> select  concat('a','b','c',null);
+--------------------------+
| concat('a','b','c',null) |
+--------------------------+
| NULL                     |
+--------------------------+

INSERT(str,pos,len,newstr) : 将字符串 str 从第 pos 位置开始,len 字符长的子串替换为 newstr

mysql> select INSERT('abcd',1,2,'!!');
+-------------------------+
| INSERT('abcd',1,2,'!!') |
+-------------------------+
| !!cd                    |
+-------------------------+

LOWER(str),UPPER(str): 将字符串转为小写/大写
mysql> select LOWER('ABC'),UPPER('abc');
+--------------+--------------+
| LOWER('ABC') | UPPER('abc') |
+--------------+--------------+
| abc          | ABC          |
+--------------+--------------+

LEFT(str,len),RIGHT(str,len): 返回字符串最左边/最右边 len 个字符,如果 len 为 null,结果返回 null
mysql> select LEFT('abcd',1),RIGHT('abcd',1);
+----------------+-----------------+
| LEFT('abcd',1) | RIGHT('abcd',1) |
+----------------+-----------------+
| a              | d               |
+----------------+-----------------+

 LTRIM(str),RTRIM(str):去除 str 左边/右边 空格
 mysql> select LTRIM('   abc  '),RTRIM('      abc     ');
+-------------------+-------------------------+
| LTRIM('   abc  ') | RTRIM('      abc     ') |
+-------------------+-------------------------+
| abc               |       abc               |
+-------------------+-------------------------+

REPEAT(str,count):返回 str 重复 count 次数结果

mysql> select REPEAT('ad',3);
+----------------+
| REPEAT('ad',3) |
+----------------+
| adadad         |
+----------------+

REPLACE(str,from_str,to_str):to_str 替换 str 中出现的 from_str

mysql> select REPLACE('abcd','ab','!!');
+---------------------------+
| REPLACE('abcd','ab','!!') |
+---------------------------+
| !!cd                      |
+---------------------------+

STRCMP(expr1,expr2):比较 expr1 和 expr2 的 ascii 值的大小,如果相等返回 0 ,如果 expr1 比 expr2 小 返回 -1,如果 expr1 比 expr2 大 返回 1

mysql> select STRCMP('a','a'),STRCMP('a','b'),STRCMP('b','a');
+-----------------+-----------------+-----------------+
| STRCMP('a','a') | STRCMP('a','b') | STRCMP('b','a') |
+-----------------+-----------------+-----------------+
|               0 |              -1 |               1 |
+-----------------+-----------------+-----------------+

trim(str):去除 str 左右的空格

mysql> select  trim(' aaa  ');
+----------------+
| trim(' aaa  ') |
+----------------+
| aaa            |
+----------------+

SUBSTRING(str,pos,len): 截取 str 中从 pos 位置起的 len 个字符

mysql> select  SUBSTRING('abcdefg',1,3);
+--------------------------+
| SUBSTRING('abcdefg',1,3) |
+--------------------------+
| abc                      |
+--------------------------+

二、数值函数

select  ABS(X): 获取 X 的绝对值

select  CEIL(X): 获取大于 X 的最小整数
select  FLOOR(X):获取小于 X 的最大整数
select  MOD(N,M): 返回 n%m 结果
select  RAND():返回 0~1 之间的随机值
select  ROUND(X,D):返回 X 的四舍五入的有 D 位小数的值,D默认为0,如果返回结果为整数,则D=0
mysql> select  ROUND(1.1),ROUND(1.1,1),ROUND(1.1,2),ROUND(1,2);
+------------+--------------+--------------+------------+
| ROUND(1.1) | ROUND(1.1,1) | ROUND(1.1,2) | ROUND(1,2) |
+------------+--------------+--------------+------------+
| 1          | 1.1          | 1.10         |          1 |
+------------+--------------+--------------+------------+
select  TRUNCATE(X,D):返回 X 截取 D 位小数的结果,注意和 ROUND 的函数区别
mysql> select  TRUNCATE(1.238,2),ROUND(1.238,2);
+-------------------+----------------+
| TRUNCATE(1.238,2) | ROUND(1.238,2) |
+-------------------+----------------+
| 1.23              | 1.24           |
+-------------------+----------------+

三、日期和时间函数

select  now();获取当前时间
select DATE_FORMAT(date,format):按照 format 格式化 date ,关于 mysql 中时间的格式 ,参考 https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
mysql> select  DATE_FORMAT(now(),'%Y%m%d');
+-----------------------------+
| DATE_FORMAT(now(),'%Y%m%d') |
+-----------------------------+
| 20190218                    |
+-----------------------------+

select DATE_ADD(date,INTERVAL expr unit):返回一个时间或日期加上一个时间间隔

当前日期、当前日期向后一天,当前日期向前一天
mysql> select NOW(),DATE_ADD(now(),INTERVAL 1 day),DATE_ADD(now(),INTERVAL -1 day);
+---------------------+--------------------------------+---------------------------------+
| NOW()               | DATE_ADD(now(),INTERVAL 1 day) | DATE_ADD(now(),INTERVAL -1 day) |
+---------------------+--------------------------------+---------------------------------+
| 2019-02-18 16:30:05 | 2019-02-19 16:30:05            | 2019-02-17 16:30:05             |
+---------------------+--------------------------------+---------------------------------+
返回距离当前日期一年两个月的日期
mysql> select DATE_ADD(now(),INTERVAL '1_2' year_month);
+-------------------------------------------+
| DATE_ADD(now(),INTERVAL '1_2' year_month) |
+-------------------------------------------+
| 2020-04-18 16:31:57                       |
+-------------------------------------------+

select DATEDIFF(expr1,expr2):返回 expr1- expr2表示为从一个日期到另一个日期的天数值

mysql> select  now(),DATEDIFF(now(),'2019-01-01');
+---------------------+------------------------------+
| now()               | DATEDIFF(now(),'2019-01-01') |
+---------------------+------------------------------+
| 2019-02-18 16:34:40 |                           48 |
+---------------------+------------------------------+

select TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2):返回datetime_expr2- datetime_expr1,结果的单位由unit参数给出

mysql> select  TIMESTAMPDIFF(MINUTE,'2019-02-18 11:00:00','2019-02-18 12:00:00') as result;
+--------+
| result |
+--------+
|     60 |
+--------+
mysql> select  TIMESTAMPDIFF(HOUR,'2019-02-18 11:00:00','2019-02-18 12:00:00') as result;
+--------+
| result |
+--------+
|      1 |
+--------+

四、流程控制函数

IF(expr1,expr2,expr3):如果expr1是TRUE (expr1 <> 0和expr1 <> NULL),则IF() 返回expr2。否则,它返回expr3

IFNULL(expr1,expr2):如果expr1不是 NULL,则 IFNULL()返回 expr1; 否则它会返回 expr2
CASE WHEN [condition1] THEN result1 [WHEN [condition2] THEN result2 ...] [ELSE defultresult] END:如果 condition1 为真则返回 result1,如果 condition2 为真则返回 result2,否则返回 defultresult
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END as colvalue;
+----------+
| colvalue |
+----------+
| true     |
+----------+

CASE value WHEN [compare_value1] THEN result1 [WHEN [compare_value2] THEN result2 ...] [ELSE result] END:如果 value=compare_value1 返回 result1,如果 value=compare_value2 返回 result2

mysql> SELECT CASE 1  WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END as colvalue;
+----------+
| colvalue |
+----------+
| one      |
+----------+

五、其他函数

select VERSION():查看数据库版本

select USER():查看当前登录用户
select PASSWORD(str):返回字符串 str  加密的版本,此函数只用来设置系统用户的密码,不能用来对应用数据加密
select MD5(str):返回 str 的 MD5 值,常用来对应用中的数据进行加密

转载于:https://my.oschina.net/u/3387320/blog/3011784

你可能感兴趣的文章
资讯直播,会是下一个新风口吗
查看>>
企业邮箱自建战略优势大盘点
查看>>
关于EIGRP一些小问题的解答
查看>>
ubuntu linuxqq_v1.0.2_i386.tar.gz 安装方法
查看>>
医疗信息化、医学、医院管理、医疗器械资料下载
查看>>
cmake masql 安装
查看>>
JDK-7u4(rpm)+Tomcat-7.0+JavaCenterHome
查看>>
win10系统的一些经验
查看>>
os和shutil模块
查看>>
C/C++编译过程详解
查看>>
31、路由器搭建帧中继云
查看>>
模板分页封装
查看>>
分布式系统之Quorum (NRW)算法
查看>>
jQuery:理解$(document).ready()的特殊写法
查看>>
使用Jenkins进行持续构建与发布应用到Kubernetes集群中
查看>>
Elasticsearch 分片交互过程分析
查看>>
数据库事务原子性、一致性是怎样实现的?
查看>>
BPMN 2.0规范详解
查看>>
恢复被错误改动的文件权限
查看>>
Centos7环境下nginx配置
查看>>