(七)运算符与函数


1、字符函数

函数名称 | 描述
----|------|----
CONCAT() | 字符连接
CONCAT_WS() | 使用指定的分隔符进行字符连接
FORMAT() | 数字格式化
LOWER() | 转换成小写字母
UPPER() | 转换成大写字母
LEFT() | 获取左侧字符
RIGHT() | 获取右侧字符
LENGTH() | 获取字符串长度
LTRIM() | 删除前导空格
RTRIM() | 删除后续空格
TRIM() | 删除前导和后续空格
SUBSTRING() | 字符串截取
[NOT] LIKE() | 模式匹配
REPLACE() | 字符串替换

函数CONCAT()

创建数据表“name”并插入记录:


查看该表数据:


要求查询的结果同时输出“first_name”与“last_name”:


使用“concat()”连接,并赋予别名:


函数CONCAT_WS()

函数CONCAT_WS()要求至少有3个参数,第一个是参数是指定的分隔符,例如“.”,后续的参数是要连接的数据:

函数FORMAT()

函数FORMAT()可以将数字格式化为字符型,“,”之后的数字为保留到几位小数:

函数LOWER()、UPPER()

函数LOWER()可以将数据转化为纯小写字母:

函数UPPER()可以将数据转化为纯大写字母:


函数LEFT()、RIGHT()

函数LEFT()参数中“,”的数字为从左侧获取几位字符:

函数RIGHT()参数中“,”的数字为从右侧获取几位字符,还可以进行函数的嵌套,将获取的字符进行小写转化:


函数LENGTH()

函数LENGTH()可以获取字符串的长度,注意空格也算在长度之内:

函数LTRIM()、RTRIM()、TRIM()

函数LTRIM()可以将第一个字符前的空格删除:

函数RTRIM()可以将最后一个字符后的空格删除:


函数TRIM()可以将字符前后的空格都删除:


除此之外,函数TRIM()还可以删除特定字符,例如使用“LEADING”删除前导特定字符:

使用“TRAILING”删除后续特定字符:


使用“BOTH”删除前导及后续特定字符:


函数SUBSTRING()

函数SUBSTRING()可以截取字符串,参数分别是要截取的内容,从第几位开始截取,截取几位;要注意的是MySQL是从1开始,与Java从0开始不同:

如果只注明从第几位开始截取,那么SUBSTRING()会一直截取到字符串的结尾:

SUBSTRING()的起始位置参数还可以是负值,代表从末尾开始倒数的第几位;但要注意,截取的长度不能是负值,否则结果为空:

函数[NOT] LIKE()

函数LIKE()可以模糊匹配,使用通配符“_”或“%”,“_”指任意一个字母;“%”指任意大于0个字母:

查看数据表“user”中的详细记录:

例如查找姓名第4个字母为“e”的用户记录:


每一条“_”代表一位字母
每一条“_”代表一位字母

例如查找姓名中含有字母“o”的用户记录:


“%”代表不限制字母数量
“%”代表不限制字母数量

查看数据表“name”中的详细记录:


查询带有“%”符号的记录:


结果出现了未带有“%”的记录,原因是系统将3个“%”全部认为是通配符,因此,可以在中间的“%”前加转义字符“\”,使系统认为其只是普通的“%”符号,没有特殊意义:


函数REPLACE()

之前的LTRIM()、RTRIM()、TRIM()只能对字符之前或之后的空格进行处理,而对于字符中间的空格则无能为力,对此可以使用REPLACE()进行替换,其参数分别是待处理的字符串,要替换的字符,替换后的字符:


而且要替换的字符及替换后的字符数量并没有限制:



2、数值运算符与函数

数值运算符即常见的:+、-、x、/等等,这里不做详细的演示,而函数如下表所示:

函数名称 | 描述
----|------|----
CEIL() | 进一取整
DIV | 整数除法
FLOOR() | 舍一取整
MOD | 取余数
POWER() | 幂运算
ROUND() | 四舍五入
TRUNCATE() | 数字截取

函数CEIL()、FLOOR()

只要小数点后有位数,函数CEIL()就向上取整;而函数FLOOR()则刚好相反,会向下取整:


函数DIV

函数DIV进行整数除法,结果只保留到整数:


函数MOD

函数MOD进行取余数与取模相同,对于整数或浮点数都适用:


函数POWER()

函数POWER()即幂运算,例如求2的12次方:


函数ROUND()

函数ROUND()就是常见的四舍五入,参数分别是待处理的数据以及要保留几位小数,例如对3.652分别保留2位、1位以及取整:


函数TRUNCATE()

函数TRUNCATE()即数字截断,参数分别是待处理的数据以及要保留几位小数,与ROUND()不同,TRUNCATE()会直接去掉被截断的数字,例如对3.652分别保留2位、1位以及取整:


最后的“-1”会在将小数点后所有位数都截掉的基础上,再将小数点前1位进行清零操作
最后的“-1”会在将小数点后所有位数都截掉的基础上,再将小数点前1位进行清零操作

3、比较运算符与函数

函数名称 | 描述
----|------|----
[NOT] BETWEEN……AND…… | [不]在……范围之内
[NOT] IN() | [不]在列出值范围内
IS [NOT] NULL | [不]为空

函数[NOT] BETWEEN……AND……

查看数据表“user”中的详细记录:

查找年龄在14岁至28岁之间的用户记录:


函数[NOT] IN()

函数[NOT] IN()括号中的内容就是列出值的范围:


“1”代表TRUE,“0”代表FALSE
“1”代表TRUE,“0”代表FALSE

函数IS [NOT] NULL

查看数据表“name”:


查找姓名为空的记录:



4、日期时间函数

函数名称 | 描述
----|------|----
NOW() | 当前时间和日期
CURDATE() | 当前日期
CURTIME() | 当前时间
DATE_ADD() | 日期变化
DATEDIFF() | 日期差值
DATE_FORMAT() | 日期格式化

函数NOW()、CURDATE()、CURTIME()

函数NOW()返回当前查询时的日期及时间,而函数CURDATE()、CURTIME()则是分别显示日期或时间:


函数DATE_ADD()

函数DATE_ADD()可以对日期进行增减,参数为代修改的日期以及要增减的量,常用的关键词有YEAR、MONTH、WEEK、DAY等:



可用关键词
可用关键词

函数DATEDIFF()

函数DATEDIFF()可以计算日期之间差值,例如2016年6月28日距离现在相差多少:


函数DATE_FORMAT()

函数DATE_FORMAT()可以转换日期的格式:


可用说明符
可用说明符

5、信息函数

函数名称 | 描述
----|------|----
CONNECTION_ID() | 连接ID
DATABASE() | 当前数据库
LAST_INSERT_ID() | 最后插入记录的ID
USER() | 当前用户
VERSION() | 版本信息

函数CONNECTION_ID()

函数CONNECTION_ID()可以返回MySQL服务器的连接数,也就是到目前为止MySQL服务的连接次数,每个连接都有各自唯一的ID:


函数DATABASE()

函数DATABASE()显示当前数据库:


函数LAST_INSERT_ID()

函数LAST_INSERT_ID()需要有类似“ID”的自动编号字段:


因此对数据表“name”加以改造:


添加一条新记录,此时“id”编号自增应为5,查询最后插入记录的ID,结果确实是5:


如果一次插入多条记录,那么只会查询到多条记录中第一条插入记录的ID:


函数USER()、VERSION()

函数USER()、VERSION()分别显示登录的用户名及MySQL版本信息:



6、聚合函数

函数名称 | 描述
----|------|----
AVG() | 平均值
COUNT() | 计数
MAX() | 最大值
MIN() | 最小值
SUM() | 求和

聚合函数都只有一个返回值,下列演示都使用数据表“tdb_goods”:


函数AVG()

求所有商品的平均价格:


还可以使用函数ROUND()对其进行四舍五入,并保留2为小数:


函数COUNT()

求商品的总数量:


函数MAX()

求最高的商品价格:


函数MIN()

求最低的商品价格:


函数SUM()

求所有商品的总价格:



7、加密函数

函数名称 | 描述
----|------|----
MD5() | 信息摘要算法
PASSWORD() | 密码算法

函数MD5()

函数MD5()为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护:

结果共32位
结果共32位

  如果该数据库中的信息是用于日后的WEB应用,建议都使用MD5进行加密。

函数PASSWORD()

函数PASSWORD()更多的用于密码的计算:


结果共32位
结果共32位

例如修改MySQL用户的登录密码:


验证原密码能否登陆:


提示密码错误
提示密码错误

使用修改后的密码“root”进行登录:


成功进入MySQL界面
成功进入MySQL界面

8、运算符与函数汇总:

  • 字符函数

函数名称 | 描述
----|------|----
CONCAT() | 字符连接
CONCAT_WS() | 使用指定的分隔符进行字符连接
FORMAT() | 数字格式化
LOWER() | 转换成小写字母
UPPER() | 转换成大写字母
LEFT() | 获取左侧字符
RIGHT() | 获取右侧字符
LENGTH() | 获取字符串长度
LTRIM() | 删除前导空格
RTRIM() | 删除后续空格
TRIM() | 删除前导和后续空格
SUBSTRING() | 字符串截取
[NOT] LIKE() | 模式匹配
REPLACE() | 字符串替换

  • 数值运算符与函数

函数名称 | 描述
----|------|----
CEIL() | 进一取整
DIV | 整数除法
FLOOR() | 舍一取整
MOD | 取余数
POWER() | 幂运算
ROUND() | 四舍五入
TRUNCATE() | 数字截取

  • 比较运算符与函数

函数名称 | 描述
----|------|----
[NOT] BETWEEN……AND…… | [不]在……范围之内
[NOT] IN() | [不]在列出值范围内
IS [NOT] NULL | [不]为空

  • 日期时间函数

函数名称 | 描述
----|------|----
NOW() | 当前时间和日期
CURDATE() | 当前日期
CURTIME() | 当前时间
DATE_ADD() | 日期变化
DATEDIFF() | 日期差值
DATE_FORMAT() | 日期格式化

  • 信息函数

函数名称 | 描述
----|------|----
CONNECTION_ID() | 连接ID
DATABASE() | 当前数据库
LAST_INSERT_ID() | 最后插入记录的ID
USER() | 当前用户
VERSION() | 版本信息

  • 聚合函数

函数名称 | 描述
----|------|----
AVG() | 平均值
COUNT() | 计数
MAX() | 最大值
MIN() | 最小值
SUM() | 求和

  • 加密函数

函数名称 | 描述
----|------|----
MD5() | 信息摘要算法
PASSWORD() | 密码算法


版权声明:欢迎转载,欢迎扩散,但转载时请标明作者以及原文出处,谢谢合作!             ↓↓↓
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容