【02单表查询】——04谓词和运算符

本文深入解析SQL查询中使用的谓词(如IN、BETWEEN、LIKE)和比较运算符(如=、>、<、>=、<=、<>),并阐述算术运算符(+、-、*、/、%)的优先级规则。通过实例展示如何灵活运用这些元素进行复杂查询,并强调了圆括号在表达式中的重要性以提高代码可读性。

T-SQL有几种不同的语言元素可以指定逻辑表达式,例如,查询过滤器(WHERE和HAVING)、CHECK约束等,在逻辑表达式中可以使用各种谓词(取值为true、false、unknown的表达式)和运算符。

——T-SQL支持的谓词
***IN
***BETWEEN
***LIKE

IN谓词
in谓词用于检查一个值(或者标量表达式)是否与一组元素中的至少一个相等,例如下面这个查询返回的就是orderid等于10248 、或10249 、或10250的数据

SELECT orderid,empid,orderdate
FROM Sales.Orders
WHERE orderid IN(10248,10249,10250)

BETWEEN谓词
between这个谓词用于检查一个值是否在指定的范围之内,包括两个边界值,例如,下面这个查询返回的就是orderid在10300到10310之间的所有订单

SELECT orderid,empid,orderdate
FROM Sales.Orders
WHERE orderid BETWEEN 10300 AND 10310

LIKE谓词
like这个谓词用于检查一个字符串的值是否与指定的模式相匹配。例如,以下查询返回lastname以字符“D”开头的所有数据

SELECT empid,firstname,lastname
FROM HR.Employees
WHERE lastname like N"D%";

D%前面那个N代表国际化National,用于表示字符串是Unicode数据类型。在后面的博文中再详细的说模式匹配和LIKE谓词。

——T-SQL支持的比较运算符
T-sql支持以下这些比较运算符

=,>,<,>=,<=,<>,!=,!>,!<

其中最后三个不是标准运算符,因为非标准运算符都可以使用响应的标准运算符来代替,所以建议尽量避免使用这些非标准的运算符。

例如,以下查询返回2008年1月1日之后的所有数据

SELECT orderid,empid,orderdate
FROM Sales.Orders
WHERE orderdate >='20080101'

如果要把多个逻辑表达式组合起来,可以使用OR或者AND,如想对布尔类型取反,可以使用NOT运算符。
例如,以下查询返回2008年1月1日之后,empid为1、3、5的所有记录

SELECT orderid,empid,orderdate
FROM Sales.Orders
WHERE orderdate >='20080101' AND empid IN(1,3,5)

——T-SQL支持的算术运算符
T-sql支持以下五种运算符

+,-,*,/,%(取模)

注意:T-SQL中,涉及两个运算对象的标量表达式的数据类型取决于数据类型的优先级,由优先级较高的运算对象决定。如果两个运算对象具有相同的数据类型,表达式的结果也为这样的数据类型。

例如:两个整数(INT)相除,得到的还是一个整数,表达式5/2,结果返回的是2,而不是2.5

如果两个运算对象具有不同的类型,则具有较低类型优先级的运算对象就会自动转换为更高级的类型
例如:在表达式5/2.0中,第一个运算对象是整数(INT),第二个是实数(NUMERIC),因为SQL认为NUMERIC比INT更高级,所以计算的时候会隐式把INT类型的运算对象5转化为5.0,这样就得到了结果2.5

——同一表达式中的运算符优先顺序

1、()
3、+,-
4、=,>,<,>=,<=,<>,!=,!>,!<
5、NOT
6、AND
7、BETWEEN,IN,LIKE,OR
8、=

例如,在以下查询中,AND的优先级比OR高

SELECT orderid,empid,orderdate
FROM Sales.Orders
WHERE custid = 1 AND empid IN(1,3,5) OR custid = 85 AND empid IN(2,4,6)

这条查询返回有custid为1下,empid为1或3或5的数据;或者是custid为85下,empid为2或4或6的数据

圆括号的优先级最高,所以他拥有最高的控制权,处于以后让其他人审查和维护代码的需要,为了提高可读性,尽可能使用圆括号和代码缩进是一种良好的编码习惯,即使在一些情况下没必要添加括号

例如,以下查询在逻辑上和上面那个查询是一样的,但是它的逻辑显得清晰多了

SELECT orderid,empid,orderdate
FROM Sales.Orders
WHERE 
(custid = 1 AND empid IN(1,3,5))
 OR 
(custid = 85 AND empid IN(2,4,6))

期待你阅读下一篇博文【02单表查询】——05CASE表达式

数据集介绍:电力线目标检测数据集 一、基础信息 数据集名称:电力线目标检测数据集 图片数量: 训练集:2898张图片 验证集:263张图片 测试集:138张图片 总计:3299张图片 分类类别: 类别ID: 0(电力线) 标注格式: YOLO格式,包含对象标注信息,适用于目标检测任务。 数据格式:JPEG/PNG图片,来源于空中拍摄或监控视觉。 二、适用场景 电力设施监控与巡检: 数据集支持目标检测任务,帮助构建能够自动识别定位电力线的AI模型,用于无人机或固定摄像头巡检,提升电力设施维护效率安全性。 能源与公用事业管理: 集成至能源管理系统中,提供实时电力线检测功能,辅助进行风险 assessment 预防性维护,优化能源分配。 计算机视觉算法研究: 支持目标检测技术在特定领域的应用研究,促进AI在能源公用事业行业的创新与发展。 专业培训与教育: 数据集可用于电力行业培训课程,作为工程师技术人员学习电力线检测与识别的重要资源。 三、数据集优势 标注精准可靠: 每张图片均经过专业标注,确保电力线对象的定位准确,适用于高精度模型训练。 数据多样性丰富: 包含多种环境下的电力线图片,如空中视角,覆盖不同场景条件,提升模型的泛化能力鲁棒性。 任务适配性强: 标注格式兼容YOLO等主流深度学习框架,便于快速集成模型开发,支持目标检测任务的直接应用。 实用价值突出: 专注于电力线检测,为智能电网、自动化巡检能源设施监控提供关键数据支撑,具有较高的行业应用价值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值