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

表达式和函数

表达式:

将数字和运算符连接起来的组合称为表达式。我们可以将数字称为操作数,单个操作数也可以被看作是一个表达式。

操作数:常数,列名,函数调用,其他表达式

运算符:算数运算符,比较运算符,逻辑运算符

介绍几个比较哦特殊的:

a DIV b:除法, 取商的整数部分

a XOR b:a和b有且只有一个为真时,表达式为真。

在上一章我们学到比较表达式。又比较运算符连接而成的表达式也称为布尔表达式,除非表达式中包含NULL,否则布尔表达式的结果只能是1或者0

表达式的使用:

把这些操作数和运算符相互结合起来就可以组成表达式 

1.作为计算字段放在select子句中

查询列表处的每个表达式都会被当作结果集中的一个列。

2.作为搜索条件放在where子句中

其实在where子句中可以放置任意的表达式,在读取某条记录时,只要where子句中表达式的结果不为0或者NULL,那么该纪录就会被加入到结果集。

表达式中的NULL:
NULL作为算数运算符的操作时,表达式的结果都为NULL。

除<=>,is NULL,is not NULL 外,NULL作为其余比较运算符的操作数时,表达式的结果都为NULL。

函数:
字符串处理函数:

left('abc123', 3): 给定字符串从左边取指定长度的子串。

right(.....................给定.....从右边...............

length('abc') 给定字符串占用的字节数量

lower(’ABC') 给定字符串转换成小写

upper('abc') 给定字符串转换成大写

ltrim('     abc') 给定字符串左边空格去除后的格式

rtrim('abc     ') 给定字符串后边空格去除后的格式

substring('abc123', 2, 3)给定字符串从指定位置截取指定长度的子串

concat(‘abc', '123', 'xyz')将给定的各个字符串拼接成一个新的字符串

char_length(’狗哥') 给定字符串的字符数量。

日期和时间处理函数:

now()返回当前日期和时间

curdate()返回当前日期

curtime()返回当前时间

date()将给定的日期和时间值的日期提取出来

date_add()将给定的日期和时间值添加指定的时间间隔;

date_sub(‘.....' interval * 单位)将给定的日期和时间值减去指定的时间间隔

datediff()返回两个日期之间的天数(负数表示前一个参数代表的日期比后一个参数代表的日期小)

data_format(now(), '%m-%d-%y')用给定的格式显示日期和时间

year()提取年份

month()提取月份

day()提取日

hour()提取小时

minute()提取分钟

second()提取秒

在使用date_add和sub的时候注意我们的单位有这些:
microsecond 毫秒

second 秒

minute 分钟

hour 小时

day 天

week 周

month 月

quarter 季度

year 年

在使用date_format是我们可以通过一些所谓的格式符来自定义显示格式:

%b, 简写的月份名称(jan,feb....)

%D, 带有英文后缀的月份中的日期(0st, 1st, 2st....)

%d, 数字格式的月份中的日期(00,01.....)

%f 微秒

%H 24小时制的小时(00~24)

%h 12小时制的小时(00~12)

%i 数值格式的分钟(00~59)

%M 月份名(january,February.....)

%m 数值形式的月份(00~12)

%p 上午或下午

%s 秒(00~59)
%S 秒(00~59)

%W 星期名(sunday,monday....)

%w 周内第几天(0=星期日,1=星期1, .....)

%Y 四位数数字形式的年(例如2023)

%y 两位数数字形式的年(例如23)

数值处理函数:
abs()取绝对值

pi()返回圆周率

cos ()返回一个角度的余弦

sin()返回一个角度的正弦

tan()返回一个角度的正切

pow()返回某个数的指定次幂

sqrt()返回一个数的平方根

mod() 返回除法的余数

rand() 返回一个随机数

ceil()返回不小于给定值的最小整数

floor()返回不大于给定值的最大整数

流程控制表达式和函数:
语法:
case when 表达式1 then 结果1[when 表达式2 then 结果2.....] else 默认结果 end

当表达式1为true时就返回结果1

一定要记得写末尾的end!!

mysql> select *,
    -> case when score<60 then 'bujige'
    -> when score<90 then 'hege'
    -> else 'youxiu' end as level
    -> from student_score;
+-----------+--------------------+-------+-------+
| number    | subject            | score | level |
+-----------+--------------------+-------+-------+
| 220101101 | 计算机是怎样运行的 |    78 | hege  |
| 220101102 | 计算机是怎样运行的 |    79 | hege  |
| 220101103 | 计算机是怎样运行的 |    78 | hege  |
| 220101104 | 计算机是怎样运行的 |    77 | hege  |
| 220101105 | 计算机是怎样运行的 |    77 | hege  |
+-----------+--------------------+-------+-------+
5 rows in set (0.01 sec)

if语句:

语法:if(表达式1, 表达式2, 表达式3)

含义是当表达式1为true时,返回值就为表达式2, 否则为表达式3

ifnull语句:
语法:ifnull(表达式1, 表达式2)

含义是当表达式1为NULL时,返回值就为表达式2,否则返回表达式1.

nullif语句:
语法:nullif(表达式1, 表达式2)

含义是当表达式1的值和表达式2的值相同时,函数返回值为NULL,否则返回表达式1.

汇总函数:

max(表达式)

从匹配的结果中返回表达式对应列的最大值;

mysql> select max(score) from student_score;
+------------+
| max(score) |
+------------+
|         79 |
+------------+
1 row in set (0.01 sec)

min(表达式)

从匹配结果中返回表达式对应列的最大值

sum(表达式)
求和的意思

avg(表达式)

取平均数

count(操作数)

对列中的某个值进行计数

mysql> select count(1) from student_score;
+----------+
| count(1) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)

隐式类型转换:

只要某个表达式的类型与上下文要求的类型不符合,MySQL就会根据上下文环境中需要的类型对该表达式进行类型转换。由于这些类型转换是MySQL自动完成的,所以也称为隐式类型转换。

1.将操作数类型转换为运算符需要的类型

比如把字符串’1‘和1进行相加,MySQL就会自动把字符串’1‘ 自动转换为1的整形进行相加

如果字符串中包含其他字符或者字母的话就会从第一个字符进行判断最长的数字是多少就是多少你,比如’123asd‘,这个就会转换成123.其实,当字符串类型的表达式与其他类型的表达式进行算数运算,比较大小,已经进行逻辑判断时,都会被转换成double类型。

2.将函数参数转换成该函数期望的类型

3.在where子句中,单独的字符串类型的表达式会被转换为double类型的数值

mysql> select 5 where '2a';
+---+
| 5 |
+---+
| 5 |
+---+
1 row in set, 1 warning (0.01 sec)

这里的2a就转换成了2,所以查询结果不为空集

4存储数据时,把某个值转换成某个列所需要的类型

相关文章:

表达式和函数

表达式&#xff1a; 将数字和运算符连接起来的组合称为表达式。我们可以将数字称为操作数&#xff0c;单个操作数也可以被看作是一个表达式。 操作数&#xff1a;常数&#xff0c;列名&#xff0c;函数调用&#xff0c;其他表达式 运算符&#xff1a;算数运算符&#xff0c;…...

C#基础复习

目录 格式字符串 多重标记和值 预定义类型 用户定义类型 值类型和引用类型 存储引用类型对象的成员 C#类型的分类 静态类型和dynamic关键字 类的基本概念 类成员的类型 为数据分配内存 访问修饰符 格式字符串 多重标记和值 C#程序就是一组类型声明&#xff0c;学习C#就是学习…...

Windows服务器使用代码SSH免密登录并执行脚本

服务器操作系统 Window Server 2016 1、Windows服务器安装OpenSSH 有多种方式&#xff0c;本文介绍一种方式 下载页&#xff1a; https://github.com/PowerShell/Win32-OpenSSH/releases 在下载页下载文件OpenSSH-Win64.zip 本次实验解压至 D:\OpenSSH-Win64\OpenSSH-Win6…...

(Deep Learning)交叉验证(Cross Validation)

交叉验证&#xff08;Cross Validation&#xff09; 交叉验证&#xff08;Cross Validation&#xff09;是一种评估模型泛化性能的统计学方法&#xff0c;它比单次划分训练集和测试集的方法更加稳定、全面。 交叉验证不但可以解决数据集中数据量不够大的问题&#xff0c;也可以…...

通俗举例讲解动态链接】静态链接

参考动态链接 - 知乎 加上我自己的理解&#xff0c;比较好懂&#xff0c;但可能在细节方面有偏差,但总体是一致的 静态链接的背景 静态链接使得不同的程序开发者和部门能够相对独立的开发和测试自己的程序模块&#xff0c;从某种意义上来讲大大促进了程序开发的效率&#xf…...

K8S部署常见问题归纳

目录一. 常用错误发现手段二、错误问题1. token 过期2. 时间同步问题3. docker Cgroup Driver 不是systemd4. Failed to create cgroup(未验证&#xff09;子节点误执行kubeadm reset一. 常用错误发现手段 我们在部署经常看到的提示是&#xff1a; [kubelet-check] It seems …...

Redis高可用

最近离职后还没开始找工作&#xff0c;在找工作前去学习一下Redis高可用方案。 目录Redis高可用高可用的概念实现方式持久化主从复制简单结构优化结构优缺点哨兵模式&#xff08;Sentinel&#xff09;哨兵进程的作用自动故障迁移(Automatic failover)优缺点集群优缺点Redis高可…...

Hyperledger Fabric 2.2版本环境搭建

前言 部署环境: CentOS7.9 提前安装好以下工具 git客户端golangdockerdocker-composecurl工具 以下是个人使用的版本 git: 2.39.2golang: 1.18.6docker: 23.0.3dockkekr-compose: v2.17.2curl: 7.29.0 官方文档参考链接&#xff1a;跳转链接&#xff0c;不同的版本对应的官…...

macOS Monterey 12.6.5 (21G531) Boot ISO 原版可引导镜像

本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 2023 年 4 月 10 日&#xff08;北京…...

【软件设计师13】数据库设计

数据库设计 1. 数据库设计过程 2. E-R模型 3. E-R图向关系模型的转换 例如一对一联系&#xff0c;可以将联系单独做为关系模式&#xff0c;也可以存放到任意一个实体中 而一对多要合并只能合并到多这边&#xff0c;不能存放到1 多对多则联系必须单独转成一个关系模式 4. 案…...

SpringMVC的全注解开发

文章目录一、spring-mvc.xml 中组件转化为注解形式二、DispatcherServlet加载核心配置类三、消除web.xml一、spring-mvc.xml 中组件转化为注解形式 跟之前全注解开发思路一致&#xff0c; xml配置文件使用核心配置类替代&#xff0c;xml中的标签使用对应的注解替代 <!-- 组件…...

C# | 导出DataGridView中的数据到Excel、CSV、TXT

C# | 导出DataGridView中的数据到Excel、CSV、TXT 文章目录C# | 导出DataGridView中的数据到Excel、CSV、TXT前言DataGridView数据转存DataTableDataTable转Excel方法一、使用Microsoft.Office.Interop.Excel方法二、使用EPPlus库方法三、使用NPOI库DataTable转CSVDataTable转T…...

新规拉开中国生成式AI“百团大战”序幕?

AI将走向何方&#xff1f; ChatGPT在全球范围掀起的AI热潮正在引发越来越多的讨论&#xff0c;AI该如何管理&#xff1f;AI该如何发展&#xff1f;一系列问题都成为人们热议的焦点。此前&#xff0c;马斯克等海外名人就在网络上呼吁OpenAI暂停ChatGPT的模型训练和迭代&#xf…...

日撸 Java 三百行day31

文章目录day31 整数矩阵及其运算面向对象思想java异常处理java中的getter和setter方法代码day31 整数矩阵及其运算 面向对象思想 结合之前day7和day8面向过程开发&#xff0c;只关注了矩阵加法和矩阵乘法的功能。而day31是面向对象开发&#xff0c;一个矩阵类&#xff0c;在这…...

在线绘制思维导图

思维导图是一种可视化的思维工具&#xff0c;它可以将放射性思考具体化为可视的图像和图表。 思维导图利用图文并重的技巧&#xff0c;把各级主题的关系用相互隶属与相关的层级图表现出来&#xff0c;把主题关键词与图像、颜色等建立记忆链接。 它运用图像和颜色等多种元素&…...

月薪20k的性能测试必备技能:发现性能瓶颈掌握性能调优

背景 当下云计算、大数据盛行的背景下&#xff0c;大并发和大吞吐量的需求已经是摆在企业面前的问题了&#xff0c;其中网络的性能要求尤为关键&#xff0c;除了软件本身需要考虑到性能方面的要求&#xff0c;一些硬件上面的优化也是必不可少的。 作为一名测试工作者&#xf…...

3、Web前端学习规划:CSS - 学习规划系列文章

CSS作为Web前端开发的第2种重要的语言&#xff0c;笔者建议在学了HTML之后进行。CSS主要是对于HTML做一个渲染&#xff0c;其也带了一些语言语法函数&#xff0c;功能也非常强大。 1、 简介&#xff1b; CSS(层叠样式表)是一种用于描述网页样式的语言。它可以控制网页中的字体、…...

城市轨道交通列车时刻表优化问题【最优题解】

文章目录城市轨道交通列车时刻表优化问题思路文章底部城市轨道交通列车时刻表优化问题 最新进度在文章最下方卡片&#xff0c;加入获取思路数据代码论文&#xff1a;2023十三届MathorCup交流 (第一时间在CSDN分享&#xff0c;文章底部) 题目为数据分析类题目。列车时刻表优化…...

常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...

在职场上&#xff0c;你永远想不到什么样的员工会被优化&#xff0c;比如下面这位&#xff1a;常年不卷&#xff0c;按时下班&#xff0c;工作很专业&#xff0c;同事问什么都回答&#xff0c;不扯皮&#xff0c;不拉帮结派&#xff0c;简直是职场清流。在上个月竟然被优化了&a…...

基于改进多目标灰狼优化算法的考虑V2G技术的风、光、荷、储微网多目标日前优化调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...