当前位置: 首页 > article >正文

mysql使用--表达式和函数

1.表达式
如:1+1,一般包含操作数,运算符。
_1.操作数
MYSQL中最常用的操作数有以下几种
(1).常数
(2).列名,针对某个具体的表,它的列名可被当作表达式的一部分
(3).函数调用
一个函数用于完成某个特定的功能。比如NOW()获取当前时间。
(4).其他表达式
一个表达式也可作为一个操作数与另一个操作数形成一个更复杂的形式。

_2.运算符
常用的有
(1).算术运算符

运算符示例描述
+a+b加法
-a-b减法
*a*b乘法
/a/b除法
DIVa DIV b除法,取商的整数部分
%a%b取余
--a取负值

DIV取商的整数部分,/会保留小数部分。
(2).比较运算符

运算符示例解释
=a=b等于
<=>a<=>b等于(NULL值安全等于)
<>或!=a<>b不等于
<a<b小于
<=a<=b小于或等于
>a>b大于
>=a>=b大于等于
BETWEENa BETWEEN b AND ca需满足b<=a<=c
NOT BETWEENa NOT BETWEEN b AND ca需不满足b<=a<=c
INa IN (b1, b2)a是b1,b2中的某个
NOT INa NOT IN (b1, b2, b3)a不是b1,b2中的某个
IS NULLa IS NULL
IS NOT NULLa IS NOT NULL
LIKEa LIKE ba匹配b
NOT LIKEa NOT LIKE b不匹配

比较表达式结果要么1(TRUE),要么0(FALSE)
(3).逻辑运算符

运算符示例描述
NOT(也可写作!)NOT a对a取反
AND(也可写作&&)a AND b
OR(也可写作
XORa XOR ba和b有且只有一个为真时,表达式为真

_3.表达式的使用
_3.1.作为计算字段放在SELECT子句中
如:SELECT number, score+100 FROM student_score;
还有像这样的:SELECT 1, ‘a’ FROM student_score;
查询处理为:
(1).基于FROM结合WHERE得到结果集。
(2).对结果集每一行结合SELECT语句得到最终集中一行结果。

_3.2.作为搜索条件放在WHERE子句
基于FROME结合WHERE得到结果集时,对FROM得到表的每一行采用WHERE表达式,结果为TRUE,此行加入结果集。

_3.3.表达式中的NULL
_3.3.1.NULL作为算术符的操作数时,表达式的结果都为NULL
如:1+NULL结果是NULL,NULL*1结果也是NULL
_3.3.2.除<=>、IS NULL、IS NOT NULL外,NULL作为其余比较运算符的操作数时,表达式的结果都为NULL。
如:1=NULL结果是NULL,2>NULL结果是NULL。
IS NULL,IS NOT NULL用于判断某个值是否为NULL,结果只能是0或1。
<=>的操作数不包含NULL时,等价于=;当<=>的一个操作数为NULL,另一个不为NULL时,结果为0;两个操作数都为NULL时,结果为1;

2.函数
_1.字符串处理函数

名称调用示例结果描述
LEFTLEFT(‘abc123’, 3)abc提取左边指定长度串
RIGHTRIGHT(‘abc123’, 3)123
LENGTHLENGTH(‘abc’)3
LOWERLOWER(‘ABC’)abc
UPPERUPPER(‘abc’)ABC
LTRIMLTRIM(’ abc’)abc
RTRIMRTRIM('abc ')abc
SUBSTRINGSUBSTRING(‘abc123’, 2, 3)bc1
CONCATCONCAT(‘abc’, ‘123’, ‘xyz’)abc123xyz
CHAR_LENGTHCHAR_LENGTH(‘狗哥’)2给定字符串的字符数量

_2.日期和时间处理函数

名称示例结果描述
NOWNOW()2021-05-11 17:10:43当前日期和时间
CURDATECURDATE()2021-05-11
CURTIMECURTIME()17:10:43
DATEDATE(‘2021-05-11 17:10:43’)2021-05-11将给定日期和时间值的日期提取出来
DATE_ADDDATE_ADD(‘2021-05-11 17:10:43’, INTERVAL 2 DAY)2021-05-13 17:10:43
DATE_SUBDATE_SUB(‘2021-05-11 17:10:43’, INTERVAL 2 DAY)2021-05-09 17:10:43
DATEDIFFDATEDIFF(‘2021-05-11’, ‘2021-05-17’)-6
DATE_FORMATDATE_FORMAT(NOW(), ‘%m-%d-%Y’)05-11-2021
YEARYEAR(‘2021-05-11 17:10:43’)2021
MONTHMONTH(‘2021-05-11 17:10:43’)5
DAYDAY(‘2021-05-11 17:10:43’)11
HOURHOUR(‘2021-05-11 17:10:43’)17
MINUTEMINUTE(‘2021-05-11 17:10:43’)10
SECONDSECOND(‘2021-05-11 17:10:43’)43

_2.1.使用DATE_ADD,DATE_SUB时,可自定义增加或减去的时间间隔的单位。

单位描述
MICROSECOND毫秒
SECOND
MINUTE分钟
HOUR小时
DAY
WEEK星期
MONTH
QUARTER季度
YEAR

如:SELECT DATE_ADD(‘2021-05-11 17:10:43’, INTERVAL 2 MINUTE)

_2.2.使用DATE_FORMAT需注意,可通过一些所谓的格式符来自定义日期和时间的显示格式。

格式符含义
%b简写的月份名称(Jan、、、)
%D带英文后缀的月份中的日期(0th,1st,…)
%d数字格式的月份中的日期(00,01,…)
%f微妙(000000~999999)
%H24小时制的小时(00~23)
%h12小时制的小时(01~12)
%i数值格式的分钟(00~59)
%M月份名(January,…)
%m数值形式的月份(00~12)
%p上午或下午(AM代表上午,PM代表下午)
%S秒(00~59)
%s秒(00~59)
%W星期名(Sunday,…)
%w周内第几天(0=星期日,…)
%Y4位数字形式的年(例如2019)
%y2位数字形式的年(例如19)

_2.3.数值处理函数

名称示例结果描述
ABSABS(-1)1
PiPI()3.141593
COSCOS(PI())-1
SINSIN(PI())1
TANTAN(0)0
POWPOW(2, 2)4
SQRTSQRT(9)3
MODMOD(5, 2)1
RANDRAND()0.7537623539136372
CEILCEIL(2.3)3
FLOORFLOOR(2.3)2

_2.4.流程控制表达式和函数
CASE WHEN 表达式1 THEN 结果1 [WHEN 表达式1 THEN 结果1 …] [ELSE 默认结果] END
如:SELECT number, score, CASE WHEN score < 60 THEN ‘不及格’ WHEN score < 90 THEN ‘及格’ ELSE ‘优秀’ END As level FROM student_score;

CASE表达式还有第二种形式:
CASE 待比较表达式 WHEN 表达式1 THEN 结果1 [WHEN 表达式2 THEN 结果2 …] [ELSE 默认结果] END
它的含义是:
(1).待比较表达式值和表达式1值相同时,整个CASE值是结果1
(2).待比较表达式值和表达式2值相同时,整个CASE值是结果2

(3).待比较表达式值和所有WHEN后的表达式值都不同,则整个CASE表达式的值就是ELSE之后的默认结果。
如:SELECT name, department, CASE deparement WHEN ‘计算机学院’ THEN ‘1级学科’ WHEN ‘航天学院’ THEN ‘2级学科’ END AS 学院类别 FROM student_info;


http://www.kler.cn/a/133051.html

相关文章:

  • JMeter与大模型融合应用之JMeter日志分析服务化实战应用
  • Spring Batch :高效处理海量数据的利器
  • 使用React和Vite构建一个AirBnb Experiences克隆网站
  • 深入解析 MySQL 数据库:数据库时区问题
  • Android Settings 单元测试 | 如何运行单元测试?
  • Hadoop 学习心得
  • ClickHouse 语法优化规则
  • LabVIEW编程开发NI-USRP
  • vue-router的编程式导航有哪些方法?
  • 【科技素养】蓝桥杯STEMA 科技素养组模拟练习试卷B
  • 机器视觉系统选型-定光照强度
  • 虹科示波器 | 汽车免拆检修 | 2021款广汽丰田威兰达PHEV车发动机故障灯异常点亮
  • 深入了解PHP中的经典一句话木马和变量传递漏洞
  • Lstm+transformer的刀具磨损预测
  • 长虹智能电视使用123
  • Docker 可视化面板 ——Portainer
  • Spring+Mybatis整合
  • 大数据-之LibrA数据库系统告警处理(ALM-12052 TCP临时端口使用率超过阈值)
  • 解决 uniapp 开发微信小程序 不能使用本地图片作为背景图 问题
  • C语言编程陷阱(八)
  • 解决:ERROR: No matching distribution found for PIL
  • milvus数据库-查询
  • nodejs微信小程序-慢性胃炎健康管理系统的设计与实现-安卓-python-PHP-计算机毕业设计
  • pdf如何让多张图片在一页
  • HTML 超链接 a 标签
  • Django的可重用HTML模板示例