谓词:在计算机语言的环境下,谓词是指条件表达式的求值返回真或假的过程。(来自百度百科)。
简单记忆可以一句话:
在T-SQL 中谓词是取值为true,false或unknown的表达式。
对于通常的函数来说,返回值有可能是数字、字符串或者日期等,但是谓词的返回值都是真值(true/false/unknown)。这是谓词和函数的最大区别。
SQL中的谓词主要有 LKIE、BETWEEN、IS NULL、IS NOT NULL、IN、EXISTS
一、LIKE——模糊查询,用来检查字符串是否能够匹配指定的模式。
会使用到一些通配符(wildcard)
- %(百分号)表示任意长度的字符串,包括空字符串;
- -(下划线)表示任意单个字符;
- [<字符列>]字符列,表示必须匹配列指定字符中的一个字符
eg:查询返回以字符’A’,或者’B’,或者’C’开头的所有雇员
select empid,lastname
from hr.employees
where lastname like ‘[ABC]’%;
- [<>-<>]表示字符列范围,必须匹配指定范围内的一个字符。
eg:查询返回姓氏以字符‘A’到’E’开头的所有员工
select empid,lastname
from hr.employees
where lastname like ‘[A-E]%’;
- [^字符列或范围]
方括号中包含一个插入符(^),后面跟着一个字符列或范围,表示不属于指定字符列或范围内的任意单个字符。
eg:查询返回不是以字符‘A’到‘E’开头的所有员工
select empid,lastname
from hr.employees
where lastname like ‘[^A-E]%’;
还有转义字符了解一下。escape
二、BETWEEN(and)——范围查询
BETWEEN的特点是结果中会包含临界值。
三、IS NULL、IS NOT NULL
查询某些值位NULL或不为NULL的数据列是使用。
四、IN——OR的简便用法 反义;NOT IN
使用IN和NOT IN 时,是无法选出NULL数据的。
IN谓词可以使用子查询作为其参数来使用。子查询即使SQL内部生成的表,因此可以说能将表或视图作为IN的参数。
五、EXIST(用在子查询中)
EXIST的作用就是判断是否存在满足某种条件的记录,如果存在就返回真(true),不存在就返回假(false)。
NOT EXIST 与之正好相反。
注意:Exist使用的是二值谓词逻辑,总是返回true和false,而绝对不会返回unknown。
Not in 和Not exists的区别
如果在实际使用中要在查询中排除null值,可以显式或隐式的排除。
显示的排除就是在使用not in 的子查询中增加一个过滤条件where 字段 is not null;
如果在有NULL值得情况下使用not in 而不加过滤条件则查询会返回一个空的结果集。
select custid,companyname
from sales.customers as c
where custid not in (select o.custid
from sales.orders as o
where o.custid is not null);
隐式的排除就是直接使用not exists,会自动过滤掉表达式结算结果为unknown的,所以子查询中不用加过滤条件。使用not exists比not in要更安全。
select custid,companyname
from sales.customers as c
where custid not exists (select o.custid
from sales.orders as o);
来源:
原文:https://blog.csdn.net/qingdatiankong/article/details/77915015
运算符
算术运算符
+,-,*,/,%
比较运算符
主要是:>,<,=,>=,<=,<>,(!=,!>,!<)
最后三个运算符不是标准运算符。都可以使用<>来替代。
逻辑运算符
And,Or
如果对布尔表达式取反,使用NOT 运算符。
各运算符的优先级顺序
1.() parentheses
2. * (multiply),/ (division),%(modulo)
3.+(positive),-(negative)
4.=,>,<,<=,>=,<>(Comparsion operators)
5.not
6.and
7.or,between,like,in