SQL的谓词和运算符
T-SQL有几种不同的语言元素可以指定逻辑表达式,在逻辑表达式中可以使用各种谓词(取值为TRUE、FALSE或UNKNOWN的表达式)和运算符。
T-SQL支持的谓词包括IN、BETWEEN以及LIKE等。
IN:用于检查一个值(或标量表达式)是否与一组元素中的至少一个组相等。
BETWEEN:用于检查一个值是否在指定的范围内,包括两个指定的边界值。
LIKE:用于检查一个字符串值是否与指定的模式匹配。
-- 谓词例子: IN, BETWEEN, LIKE
SELECT
orderid,
empid,
orderdate
FROM Sales.Orders
WHERE orderid IN(10248, 10249, 10250);
SELECT
orderid,
empid,
orderdate
FROM Sales.Orders
WHERE orderid BETWEEN 10300 AND 10310;
SELECT
empid,
firstname,
lastname
FROM HR.Employees
WHERE lastname LIKE N'D%';
T-SQL支持这些比较运算符:=、>、<、>=、<=、<>、!=、!>、!<(带!的为非标准运算符,建议尽可能避免使用)
如果要将多个逻辑表达式组合起来,可以使用逻辑运算符OR和AND;如果想对布尔型表达式取反,可以使用NOT运算符。
T-SQL支持四种简单的算术运算符:+、-、*、/,以及%(取模)运算符,它返回一个整数除法运算的余数。
-- Comparison operators: =, >, <, >=, <=, <>, !=, !>, !<
SELECT orderid, empid, orderdate
FROM Sales.Orders
WHERE orderdate >= '20080101';
-- Logical operators: AND, OR, NOT
SELECT orderid, empid, orderdate
FROM Sales.Orders
WHERE orderdate >= '20080101' AND empid IN(1, 3, 5);
-- Arithmetic operators: +, -, *, /, %
SELECT orderid, productid, qty, unitprice, discount, qty * unitprice * (1 - discount) AS val
FROM Sales.OrderDetails;
各运算符的优先级:
1、 ()
2、 *,/,%
3、 +(正),-(负),+(加号),+(连接号),-(减号)
4、 =, >, <, >=, <=, <>, !=, !>, !<
5、 NOT
6、 AND
7、 BETWEEN,IN,LIKE,OR
8、 =(分配、赋值)