当前位置: 首页 > 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…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...