函数

1.内置函数
  MySQL提供的内置函数,也可称为系统函数,这些函数无需定义,仅需根据实际需要传递参数直接调用即可。从功能划分,大致可分为数学函数、数据类型转换函数、字符串函数、日期和时间函数、加密函数、系统信息函数、JSON函数以及其他常用函数。
(1)数学函数
三角函数:
 PI() 计算圆周率
 RADIANS(x) 用于将角度x转换为弧度
 DEGREES (x) 用于将弧度x转换为角度
 SIN (x) 正弦函数
 COS (x) 余弦函数
 TAN (x) 正切函数
 COT (x) 余切函数
 ASIN (x) 反正弦函数
 ACOS (x) 反余弦函数
 ATAN (x) 反正切函数
指数函数:
 SQRT (x) 求x的平方根
 POW (x,y) 或 POWER (x,y) 幂运算函数(计算x的y次方)
 EXP (x) 计算e(自然对数的底约为2.71828)的x次方
对数函数:
 LOG (x) 计算x的自然对数
 LOG10(x)计算以10为底的对数
求近似值函数:
 ROUND(x,[y]) 计算x最近的整数;若设置参数y,于FORMAT(x,y)功能相同
 TRUNCATE(x,y) 返回小数点后保留y位的x(舍弃多余小数位,不进行四舍五入)
 FORMAT(x,y) 返回小数点后保留y位的x(进行四舍五入)
 CELL(x)或CEILING(x) 返回大于等x的最小整数
 FLOOR(x) 返回小于等于x的最大整数
进制函数:
 BIN(x) 返回x的二进制数
 OCT(x) 返回x的八进制数
 HEX(x) 返回x的十六进制数
 ASCII(x) 返回字符c的ASCII码(ASCII码介于0~255)
 CHAR(c1,c2,c3,…) 将c1,c2,c3,…的ASCII码转换为字符,然后返回这些字符组成的字符串
 CONV(x,code1,code2) 将code1进制的x变为code2进制数
其他函数:
 RAND() 默认返回[0,1]之间的随机数
 ABS(x) 获取x的绝对值
 MOD(x,y) 求模运算,与x%y的功能相同

(2)数据类型转换函数
 CONVERT(x,type) 以type类型返回x
 CONVERT(x,USING字符集) 以指定字符集返回x数据
 CAST(x AS type) 以type类型返回x
 UNHEX(x) 将x转换为十六进制数字,然后再转为由数字表示的字符
  (CONVERT()和CAST()函数的参数x可以是任何类型的表达式,参数type的可选值为BINARAY、CHAR、DATE、DATETIME、DECIMAL、JSON、SIGNED、[INTEGER]、TIME和UNSIGNED[INTEGER])
例如:
select convert(3.6/-1.2,signed) res1,
cast(0.5/1 as unsigned) res2,
unhex(‘4d7953514c’) res3;
  上述操作中,convert()将表达式3.6/-1.2的结果以有符号整型返回-3,cast()将表达式0.5/1的结果以无符号整型返回1,unhex()将字符串4d7953514c转换为16进制后再转换为数字对应的字符。

(3)字符串函数
 CHAR_LENGTH() 获取字符串的长度
 LENGTH() 获取字符串占用的字节数
 REPEAT() 重复指定次数的字符串,并保存到一个新字符串中
 SPACE() 重复指定次数的空格,并保存到一个新字符串中
 UPPER() 将字符串全部转为大写字母,与UCASE()函数等价
 LOWER() 将字符串全部转为小写字母,与LCASE()函数等价
 STRCMP() 比较两个字符串的大小
 REVERSE() 颠倒字符串的顺序
 SUBSTRING() 从字符串的指定位置开始获取指定长度的字符串。与MID()函数等价
 LEFT() 截取并返回字符串的左侧指定个字符
 RIGHT() 截取并返回字符串的右侧指定个字符
 LPAD() 按照限定长度从左到右截取字符串,当字符串的长度小于限定长度时在左侧填充指定字符
 RPAD() 按照限定长度从左到右截取字符串,当字符串的长度小于限定长度时在右侧填充指定字符
 INSTR() 返回子串在一个字符串中第一次出现的位置。与LOCATE()和 POSITION(…IN…)函数等价,但参数顺序不同
 FIND_IN_SET() 获取子串在含有英文逗号分隔的字符串中的开始位置
 LTRIM() 删除字符串左侧的空格,并返回删除后的结果
 RTRIM() 删除字符串右侧的空格,并返回删除后的结果
 INSERT() 从字符串的指定位置开始使用子串替换字符串中出现的所有指定字符
 CONCAT() 将参数连接成一个新的字符串
 CONCAT_WS() 使用指定分隔符将参数连接成一个新字符串

以常见操作为例进行演示:
获取字符串的长度和字节数
  例如在字符集为gbk的情况下,获取字符串的长度和字节数。
select char_length(‘努力的ren’),length(‘努力的ren’);
  结果分别为6和9.

比较两个字符串的大小
  strcmp()函数有两个参数,表示参与比较的字符串。当第1个参数大于第2个参数时,返回1;当第1个参数等于第2个参数时,返回0;当第1个参数小于第2个参数时,返回-1。它是根据参数的校对集设置的比较规则进行比较的,当校对集不兼容时,则必须将其中一个参数的校对集转换为与另一个参数兼容的状态。
例如:select strcmp(‘A’,‘C’),strcmp(‘M’,‘D’),strcmp(‘12’,‘12’);
  结果为-1 1 0。

截取字符串
  从一个字符串中截取子串的函数有多个,分别为substring()、mid()、left()、right()、lpad()和rpad()函数。其中,substring()与mid()的功能相同,使用方式也相同,这里以substring()为例。
  substring()函数适用于自定义截取的开始位置以及截取的长度,left()和right()适用于从左侧或右侧截取指定长度的子串,lpad()和rpad()适用于在截取子串时,限定的长度大于字符串长度时根据自定义的字符进行填充占位。
例如截取hello字符串:
select substring(‘hello’,2,3) sub,
left(‘hello’,3) l,right(‘hello’,3) r,
lpad(‘hello’,6,’’) lpad,rpad(‘hello’,6,’’) rpad;
  (注:substring()函数的第二个参数为负数时,如“-1”表示从字符串的末尾字符开始截取。当设置的截取开始位置超过字符串长度时,结果将返回空)

获取字符串第一次出现的位置
  若要查看子串在字符串中第一次出现的位置,可以使用INSTR()、LOCATE()或POSITION(…IN…)函数获取。但当要获取子串在含有英文逗号分隔的字符串中第一次出现的位置时也可以用FIND_IN_SET()函数。
select instr(‘banana’,‘na’) instr,
locate(‘na’,‘banana’) locate,
find_in_set(‘in’,‘liner,in,hit,in’) find;
  结果为 3 3 2。

去除字符串两端的空格
  在将数据保存到数据库之前,若没有对数据进行任何处理,则数据的两端可能会存在空格,此时可以根据实际需求去除数据左边、右边或两边的空格。
select concat(‘start’,ltrim(’ haha ‘),‘end’) ltrim,
concat(‘start’,rtrim(’ haha ‘),‘end’) rtrim,
concat(‘start’,trim(’ haha '),‘end’) trim;

替换子串
  当想要替换字符串中所有出现的指定子串时,可以使用replace()函数完成,但若要替换字符串中指定长度的子串时则可以使用insert()函数实现。
select insert(‘welcome’,3,4,‘HA’) first,
insert(‘welcome’,-4,3,‘HA’) two,
insert(‘welcome’,7,10,‘HA’) three,
replace(‘welcome’,‘e’,‘E’) four;
  (注:insert替换字符串时,开始位置设置为负数,则返回值为原字符串。当指定的子串长度大于字符串的长度时,仅利用指定字符串从指定开始位置替换到字符串的末尾)

(4)日期和时间函数
获取更精确的服务器时间
  now()、localtime()、current_timestamp()、localtimestamp()都可以获取当前服务器的时间,使用方式相同。
select now();#当前时间
select now(4);#当前时间获取毫秒位数

  sysdate()函数与now()函数一样也可以获取当前服务器的日期时间,区别在于前者获取的是动态的实时时间,后者获取的是语句开始执行的时间。
select now(),sysdate(),sleep(2),now(),sysdate() \G
  其中sleep(2)延迟2秒,然后再延迟前后分别使用now()和sysdate()获取日期和时间

格式化日期
  在实际开发中,数据库存储的日期和时间经常是unix时间戳,但是对于用户来说,时间戳的直接输出,会让其看到一个毫无意义的整型数值,因此,可以对时间戳进行格式化。
例如:

  其中,unix_timestamp()用于获取MySQL服务器当前unix时间戳,然后利用from_unixtime()根据不同的格式字符串获取星期、日期和时间,且格式字符之间可以随意设置分隔符进行连接。

提取日期时间
extract()函数从指定的日期中获取想要的日期时间,如当前日期的年份、季度、时分等。例:

  上述执行结果中,从now()获取的日期中提取的时间是由一个时分秒组成的一串数字。其中,“21”表示小时,“01”表示分钟,“12”表示秒。

添加或减少日期和时间
有两种方法:直接加或减;使用函数。

MySQL数据库编程--函数相关推荐

  1. 有关数据库MySQL的演讲_有关Mysql数据库编程的文章推荐10篇

    在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...

  2. mysql数据库编程题题_mysql数据库编程题测试

    <mysql数据库编程题测试>由会员分享,可在线阅读,更多相关<mysql数据库编程题测试(3页珍藏版)>请在人人文库网上搜索. 1.1.自行创建测试数据2.查询"生 ...

  3. 使用C语言调用mysql数据库编程实战以及技巧

    今天编写使用C语言调用mysql数据库编程实战以及技巧,为其他IT同行作为参考,当然有错误可以留言,共同学习. 一.mysql数据库的C语言常用接口API 1.首先当然是链接数据库mysql_real ...

  4. PHP访问mysql的常用函数,PHP操作MySQL数据库常用函数

    PHP操作MySQL数据库常用函数 php操作mysql数据库,俗称天龙八步: 第一步:连接数据库 第二步:判断连接错误 第三步:选择数据库 第四步:设置字符集 第五步:准备SQL语句 第六步:执行并 ...

  5. mysql 数据库编程_MySQL数据库编程(C++语言)

    MySQL数据库编程(C++语言) 发布时间:2018-05-24 21:06, 浏览次数:452 , 标签: MySQL 本文主要介绍使用C++语言连接和操作 MySQL 数据库的方法. 1. 准备 ...

  6. mysql数据库in函数查询是否走索引

    mysql数据库in函数查询是否走索引? IN 通常是走索引的,当IN后面的数据在数据表中超过30%的匹配时是全表的扫描,不会走索引,因此IN走不走索引与后面的数据量有关系! 昨天恰好在工作中遇到了这 ...

  7. c连接mysql数据库字符串函数_在mysql数据库—— 字符串函数的运用

    在mysql数据库中函数的使用 字符函数: 函数名称 描述 concat 字符连接 Concat_ws 使用指定的分隔符进行字符连接 format 数字格式化(千分化) Lower 转换成小写字母 u ...

  8. MySQL数据库实训题_实训六 MySql数据库编程练习

    实训六MySql数据库编程练习 一.实训目的 1.掌握Mysql数据库.Navicat  for Mysql等软件的安装配置方法. 2.掌握使用JDBC驱动程序连接MySql数据库的使用方法. 3.掌 ...

  9. C语言连接MySQL数据库编程教程:超详细

    ** C语言连接MySQL数据库编程教程 ** 一.下载安装mysql.h库文件 我们使用的编译器一般为VC6.0或者VS,默认的都是32位编译器,所以我们下载的库文件也直接下载32位的就可以.下面附 ...

最新文章

  1. linux批量es数据,Elasticsearch批量插入数据
  2. 鸿蒙开发板能干什么,【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(中)...
  3. 使用Opencv构建一个简单的图像相似检测器(MSE、SSIM)
  4. 成吉思汗的子孙:中国游牧蒙古人
  5. easyUI validate函数【总结篇-部分转】
  6. android 教程概要,Android精通教程-第一节Android入门简介
  7. SQL Server IS NULL语句使用举例
  8. 拓端tecdat|R语言k-means聚类、层次聚类、主成分(PCA)降维及可视化分析鸢尾花iris数据集
  9. 【2019JXCPC省赛:H】Rng(找规律+逆元)
  10. 改变世界的程序员—Jack Dorsey (程序员 2011-6)
  11. mysql 正则表达式 包含中文_MYSQL 中文检索匹配与正则表达式
  12. 我设计的五笔日本语输入法和韩语输入法初稿图
  13. unity3d 角色 武器 动画 和 blender 工作流
  14. ps怎么保存一小块的图片_ps中怎么保存图片
  15. 怎么在12306上选择上中下卧铺
  16. html制作过程总结经验,网页基础制作教程:学习HTML经验总结
  17. Windows11 运行安卓子系统 教程
  18. uniapp里的mounted_uni-app自定义组件mounted无法获取节点信息
  19. SWAP函数的几种写法
  20. Centos 配置阿里yum源

热门文章

  1. MATLAB 求解定积分和不定积分
  2. Debian配置SMB服务-lnxserver3
  3. springboot mybatis 分页
  4. 基于bim技术的应用软件有哪些?提高bim工作效率的revit插件?
  5. BlackHat2020议题之Web缓存投毒
  6. c#获取计算机制造商信息
  7. 以IM为例看58同城典型技术架构演变
  8. 股票自选股基本函数大全-3
  9. 彻底掌握 Javascript(八)正则表达式【讲师辅导】-曾亮-专题视频课程
  10. 计算机控制 采样电路,计算机模拟量的采样与处理