mysql中的内置函数

mysql内置函数列表可以从mysql官方文档查询,这里仅分类简单介绍一些可能会用到的函数。

1 数学函数

abs(x)
pi()
mod(x,y)
sqrt(x)
ceil(x)或者ceiling(x)
rand(),rand(N):返回0-1间的浮点数,使用不同的seed N可以获得不同的随机数
round(x, D):四舍五入保留D位小数,D默认为0, 可以为负数, 如round(19, -1)返回20
truncate(x, D):截断至保留D位小数,D可以为负数, 如trancate(19,-1)返回10
sign(x): 返回x的符号,正负零分别返回1, -1, 0
pow(x,y)或者power(x,y)
exp(x):e^x
log(x):自然对数
log10(x):以10为底的对数
radians(x):角度换弧度
degrees(x):弧度换角度
sin(x)和asin(x):
cos(x)和acos(x):
tan(x)和atan(x):
cot(x):

2 字符串函数

char_length(str):返回str所包含的字符数,一个多字节字符算一个字符
length(str): 返回字符串的字节长度,如utf8中,一个汉字3字节,数字和字母算一个字节
concat(s1, s1, ...): 返回连接参数产生的字符串
concat_ws(x, s1, s2, ...): 使用连接符x连接其他参数产生的字符串
INSERT(str,pos,len,newstr):返回str,其起始于pos,长度为len的子串被newstr取代。
1. 若pos不在str范围内,则返回原字符串str
2. 若str中从pos开始的子串不足len,则将从pos开始的剩余字符用newstr取代
3. 计算pos时从1开始,若pos=3,则从第3个字符开始替换
lower(str)或者lcase(str):
upper(str)或者ucase(str):
left(s,n):返回字符串s最左边n个字符
right(s,n): 返回字符串最右边n个字符
lpad(s1, len, s2): 用s2在s1左边填充至长度为len, 若s1的长度大于len,则截断字符串s1至长度len返回
rpad(s1, len, s2):
ltrim(s):删除s左侧空格字符
rtrim(s):
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)或TRIM([remstr FROM] str):从str中删除remstr, remstr默认为空白字符
REPEAT(str,count):返回str重复count次得到的新字符串
REPLACE(str,from_str,to_str): 将str中的from_str全部替换成to_str
SPACE(N):返回长度为N的空白字符串
STRCMP(str1,str2):若str1和str2相同,返回0, 若str1小于str2, 返回-1, 否则返回1.
SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len),MID(str,pos,len): 获取特定位置,特定长度的子字符串
LOCATE(substr,str), LOCATE(substr,str,pos),INSTR(str,substr),POSITION(substr IN str): 返回字符串中特定子串的位置,注意这里INSTR与其他函数的参数位置是相反的
REVERSE(str)
ELT(N,str1,str2,str3,...):返回参数strN, 若N大于str参数个数,则返回NULL
FIELD(str,str1,str2,str3,...): 返回str在后面的str列表中第一次出现的位置,若找不到str或者str为NULL, 则返回0
FIND_IN_SET(str,strlist):strlist是由','分隔的字符串,若str不在strlist或者strlist为空字符串,则返回0;若任意一个参数为NULL则返回NULL
MAKE_SET(bits,str1,str2,...): 由bits的作为位图来选取strN参数,选中的参数用','连接后返回

3 日期和时间函数

CURDATE(), CURRENT_DATE, CURRENT_DATE():用于获取当前日期,格式为'YYYY-MM-DD'; 若+0则返回YYYYMMDD
UTC_DATE, UTC_DATE():返回当前世界标准时间
CURTIME([fsp]), CURRENT_TIME, CURRENT_TIME([fsp]): 用于获取当前时间, 格式为'HH:MM:SS' 若+0则返回 HHMMSS
UTC_TIME, UTC_TIME([fsp])
CURRENT_TIMESTAMP, CURRENT_TIMESTAMP([fsp]), LOCALTIME, LOCALTIME([fsp]), SYSDATE([fsp]), NOW([fsp]): 用于获取当前的时间日期,格式为'YYYY-MM-DD HH:MM:SS',若+0则返回YYYYMMDDHHMMSS
UTC_TIMESTAMP, UTC_TIMESTAMP([fsp])
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date):返回一个unix时间戳('1970-01-01 00:00:00' UTC至今或者date的秒数),这实际上是从字符串到整数的一个转化过程
FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format):从时间戳返回'YYYY-MM-DD HH:MM:SS' 或者YYYYMMDDHHMMSS,加入format后根据所需的format显示。
MONTH(date)
MONTHNAME(date)
DAYNAME(date)
DAY(date),DAYOFMONTH(date):1-31或者0
DAYOFWEEK(date):1-7==>星期天-星期六
DAYOFYEAR(date): 1-365(366)
WEEK(date[,mode]):判断是一年的第几周,如果1-1所在周在新的一年多于4天,则将其定为第一周;否则将其定为上一年的最后一周。mode是用来人为定义一周从星期几开始。
WEEKOFYEAR(date):类似week(date,3),从周一开始计算一周。
QUARTER(date):返回1-4
HOUR(time):返回时间中的小时数,可以大于24
MINUTE(time):
SECOND(time):
EXTRACT(unit FROM date):提取日期时间中的要素

    SELECT EXTRACT(YEAR FROM '2009-07-02'); ##2009SELECT EXTRACT(YEAR_MONTH FROM '2009-07-02 01:02:03');##200907SELECT EXTRACT(DAY_MINUTE FROM '2009-07-02 01:02:03');##20102SELECT EXTRACT(MICROSECOND FROM '2003-01-02 10:30:00.000123');##123

TIME_TO_SEC(time)
SEC_TO_TIME(seconds)

TO_DAYS(date): 从第0年开始的天数
TO_SECNDS(expr):从第0年开始的秒数

ADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days),DATE_ADD(date,INTERVAL expr unit)
DATE_SUB(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)
ADDTIME(expr1,expr2)
SUBTIME(expr1,expr2)

    SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');##'2008-01-02 01:01:01.000001'SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');##'03:00:01.999997'

注意:时间日期的加减也可以直接用+/-来进行

    date + INTERVAL expr unitdate - INTERVAL expr unit如:SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND;##'2009-01-01 00:00:00'SELECT INTERVAL 1 DAY + '2008-12-31';##'2009-01-01'SELECT '2005-01-01' - INTERVAL 1 SECOND;##'2004-12-31 23:59:59'

DATE_FORMAT(date,format):
DATEDIFF(expr1,expr2):返回相差的天数
TIMEDIFF(expr1,expr2):返回相隔的时间

4 条件判断函数

IF(expr1,expr2,expr3):如果expr1不为0或者NULL,则返回expr2的值,否则返回expr3的值
IFNULL(expr1,expr2):如果expr1不为NULL,返回expr1,否则返回expr2
NULLIF(expr1,expr2): 如果expr1=expr2则返回NULL, 否则返回expr2
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END
当compare_value=value时返回result
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
当condition为TRUE时返回result

    SELECT CASE 1 WHEN 1 THEN 'one'WHEN 2 THEN 'two' ELSE 'more' END;##'one'SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;##'true'SELECT CASE BINARY 'B'WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;##NULL

5 系统信息函数

VERSION():返回mysql服务器的版本,是utf8编码的字符串
CONNECTION_ID():显示连接号(连接的线程号)
DATABASE(),SCHEMA():显示当前使用的数据库
SESSION_USER(), SYSTEM_USER(), USER(), CURRENT_USER, CURRENT_USER():返回当前的用户名@主机,utf8编码字符串
CHARSET(str)
COLLATION(str)
LAST_INSERT_ID():自动返回最后一个insert或者update查询, 为auto_increment列设置的第一个发生的值

6 加密和压缩函数

PASSWORD(str):这个函数的输出与变量old_password有关。old_password 在mysql5.6中默认为0。 不同取值的效果如下表

old_password=1时, password(str)的效果与old_password(str)相同,由于其不够安全已经弃用(5.6.5以后)。
old_password=2时,在生成哈希密码时会随机加盐。

MD5(str):计算MD5 128位校验和,返回32位16进制数构成的字符串,当str为NULL时返回NULL。可以用作哈希密码
SHA1(str), SHA(str):计算160位校验和,返回40位16进制数构成的字符串,当str为NULL时返回NULL。
SHA2(str, hash_length):计算SHA-2系列的哈希方法(SHA-224, SHA-256, SHA-384, and SHA-512). 第一个参数为待校验字符串,第二个参数为结果的位数(224, 256, 384, 512)
ENCRYPT(str[,salt]): 用unix crypt()来加密str. salt至少要有两位字符,否则会返回NULL。若未指定salt参数,则会随机添加salt。

ECODE(crypt_str,pass_str):解密crypt_str, pass_str用作密码
ENCODE(str,pass_str):用pass_str作为密码加密str

DES_ENCRYPT(str[,{key_num|key_str}]):用Triple-DES算法编码str, 这个函数只有在mysql配置成支持ssl时才可用。
DES_DECRYPT(crypt_str[,key_str])

AES_ENCRYPT(str,key_str[,init_vector])
AES_DECRYPT(crypt_str,key_str[,init_vector])

COMPRESS(string_to_compress):返回二进制码
UNCOMPRESS(string_to_uncompress)

7 聚合函数

若在没使用group by时使用聚合函数,相当于把所有的行都归于一组来进行处理。除非特殊说明,一般聚合函数会忽略掉NULL.
AVG([DISTINCT] expr): 返回expr的平均值,distinct选项用于忽略重复值
COUNT([DISTINCT] expr):返回select中expr的非0值个数,返回值为bigint类型
group_concat:连接组内的非空值,若无非空值,则返回NULL

        GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val])

MAX([DISTINCT] expr)
MIN([DISTINCT] expr)

SUM([DISTINCT] expr)
VAR_POP(expr)
VARIANCE(expr):同VAR_POP(expr),但是这是标准sql的一个扩展函数
VAR_SAMP(expr)
STD(expr): 这是标准sql的一个扩展函数
STDDEV(expr):这个函数是为了跟oracle兼容而设置的
STDDEV_POP(expr):这个是sql标准函数

STDDEV_SAMP(expr):样本标准差

8 格式或类型转化函数

FORMAT(X,D[,locale]):将数字X转化成'#,###,###.##'格式,D为保留的小数位数
CONV(N,from_base,to_base):改变数字N的进制,返回值为该进制下的数字构成的字符串
INET_ATON(expr):ip字符串转数字
INET_NTOA(expr):数字转ip字符串
CAST(expr AS type):转换数据类型
CONVERT(expr,type), CONVERT(expr USING transcoding_name): type可以为BINARY[(N)],CHAR[(N)],DATE,DATETIME, DECIMAL[(M[,D])],DECIMAL[(M[,D])],TIME,UNSIGNED [INTEGER]等等。transcoding_name如utf8等等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

待整理

CNN 适合处理图片类输入数据,单独的,数据之间没有关系。 rnn则适合处理序列类数据,视频帧,语言。 深度神经网络一般指隐藏层大于2的神经网络。深层网络相对于浅层网络,表达能力更强。仅有一个隐藏层的神经网络就能拟合…

希尔伯特变换_学习笔记1-傅里叶变换1

最终目标是解微分方程。第一章首先介绍了一般意义下的傅里叶变换,之后逐渐将傅里叶变换的概念抽象化,将变换的定义域进行拓展。最后少量介绍傅里叶变换在偏微分方程中的应用。习题解答是自己写的,有的不会,有的不知道对不对。傅里…

使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)

摘要:首先这个Decorator解释一下这个单词:“装饰器”,我觉得其实可以这样理解,他就像我们用到的Frame,他把每个页面共有的东西提炼了出来,也可能我们也会用各种各样的include标签,将我们的常用页…

FFPLAY的原理(一)

概要电影文件有很多基本的组成部分。首先,文件本身被称为容器Container,容器的类型决定了信息被存放在文件中的位置。AVI和Quicktime就是容器的例子。接着,你有一组流,例如,你经常有的是一个音频流和一个视频流。&…

安卓开发 新浪微博share接口实现发带本地图片的微博

1.微博share接口 在开始之前,我们先看一下要用到的这个接口: 我们这次是要上传本地图片,可以很明确的知道,除了要用POST方式提交请求,还要采用multipart/form-data编码方式。 那么这个multipart/form-data编码方式是什…

python编写装饰器_我也来写一下python装饰器

有借用,但原文出处已经找不到了,根据笔记分享一下解释器的基础。下面的代码表示,等待两秒钟,输出‘test is running。现在要求增加统计程序运行时间的功能。等待两秒钟,输出‘test is running,现要求增加统计程序运行时…

VirtualBox安装Centos6.8出现——E_INVALIDARG (0x80070057)

VirtualBox使用已有的虚拟硬盘出错: 问题描述:UUID已经存在 Cannot register the hard disk E:\system_iso\centos6.8.vdi {05f096aa-67fc-4191-983d-1ed00fc6cce9} because a hard disk E:\system_iso\centos68_02\centos6.8.vdi with UUID {05f096aa-6…

DFT 与 ATPG综 述

DFT 可测试性设计 工程会接触 DFT。需要了解 DFT 知识,但不需要深入。 三种基本的测试(概念来自参考文档): 边界扫描测试:Boundary Scan Test: 测试目标是 IO-PAD,利用 JTAG 接口互连以方便 测试。&#x…

非线性动力学_非线性动力学特辑 低维到高维的联通者

序言: 本文将以维度为主线, 带量大家进入非线性动力学的世界。 文章数学部分不需要全部理解, 理解思维方法为主非线性动力学,是物理学的思维进入传统方法所不能解决的问题的一座丰碑。它可以帮助我们理解不同复杂度和时间空间尺度…

Go语言channel与select原理

本文会尝试解释 go runtime 中 channel 和 select 的具体实现,部分内容来自 gophercon2017。Go版本为1.8.3channel 第一部分讲述一下 channel 的用法。channel 可以看做一个队列,用于多个goroutine之间的通信,例如下面的例子,一个…

Xadmin添加用户小组件出错

环境: Python 3.5.6 Django 2.1 Xadmin 原因: render函数在django2.1上有变化 解决方案: 1.在Python终端输入命令help(xadmin) 查看xadmin安装位置 得到如下输出 FILE/root/anaconda3/envs/learndjango/lib/python3.5/site-packages/xad…

成本预算的四个步骤_全网推广步骤有哪些?

全网推广的步骤是什么?一般来说,搜索引擎优化是大多数中小企业常用的推广方法。主要是通过对一些搜索引擎的排名来提高网站的曝光率,从而更好的提高自己网站的流量,从而更好的实现互联网层面的销售。接下来,让我们学习…

undefined reference to `std::cout'等错误

(1)gcc和g都是GNU(组织)的一个编译器。 (2)后缀名为.c的程序和.cpp的程序g都会当成是c的源程序来处理。而gcc不然,gcc会把.c的程序处理成c程序。 (3)对于.cpp的程序,编译可以用gcc/g…

FFPLAY的原理(二)

关于包Packets的注释从技术上讲一个包可以包含部分或者其它的数据,但是ffmpeg的解释器保证了我们得到的包Packets包含的要么是完整的要么是多种完整的帧。现在我们需要做的是让SaveFrame函数能把RGB信息定稿到一个PPM格式的文件中。我们将生成一个简单的PPM格式文件…

python生成requirements.txt的两种方法

python项目如何在另一个环境上重新构建项目所需要的运行环境依赖包? 使用的时候边记载是个很麻烦的事情,总会出现遗漏的包的问题,这个时候手动安装也很麻烦,不能确定代码报错的需要安装的包是什么版本。这些问题,requi…

node.js 安装使用http-server

node.js npm全局安装了http-server后我该怎么使用它?我在它的安装目录下创建了inde.html,浏览器localhost:8080可以访问,那我的项目需要放在它的安装目录下?还是需要在我的项目下配置什么或者使用什么指令启动它?我在我…

D - 卿学姐与魔法

卿学姐与魔法 Time Limit: 1200/800MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status“你的膜法也救不了你 在去拯救公主的道路上,卿学姐披荆斩棘,刀刃早已锈迹斑斑。 一日卿学姐正在为武器的问题发愁,碰到了正…

python对excel表统计视频教程_Python实现对excel文件列表值进行统计的方法

本文实例讲述了Python实现对excel文件列表值进行统计的方法。分享给大家供大家参考。具体如下:#!/usr/bin/env python#codinggbk#此PY用来统计一个execl文件中的特定一列的值的分类import win32com.clientfilenameraw_input("请输入要统计文件的详细地址&#…

mooc后台管理系统设计

摘 要 本设计采用Python中的Django框架实现Mooc后台管理界面设计,django是一个完整的开源web开源框架,使用起来能够快速的搭建你想要的网站,由于django自带后台管理系统,本设计中后台管理模板采用功能更加强大的Xadmin实现。数据库部分采用mysql5.7,由于django中有自带封装的数…

DirectShow系统初级指南

流媒体的处理,以其复杂性和技术性,一向广受工业界的关注。特别伴随着因特网的普及,流媒体在网络上的广泛应用,怎样使流媒体的处理变得简单而富有成效逐渐成为了焦点问题。选择一种合适的应用方案,事半功倍。此时&#…