逻辑运算符
逻辑运算符
| 名称 | 描述 |
|---|---|
AND,&& | 逻辑与 |
NOT,! | 取反值 |
OR,|| | 逻辑或 |
XOR | 逻辑异或 |
在SQL中,所有逻辑运算符来评估TRUE,FALSE或NULL(UNKNOWN)。在MySQL中,这些实现为1(TRUE),0(FALSE)和NULL。尽管其中有些服务器可能返回的任何非零值,但大多数情况对于不同的SQL数据库服务器来说是通用的TRUE。
MySQL将所有非零,非NULL值都评估为TRUE。例如,以下语句均评估为TRUE:
mysql>SELECT 10 IS TRUE; -> 1 mysql>SELECT -10 IS TRUE; -> 1 mysql>SELECT 'string' IS NOT NULL; -> 1
NOT,!逻辑非。计算
1操作数是否为0,0如果操作数为非零,则NOT NULL返回NULL。mysql>
SELECT NOT 10; -> 0 mysql>SELECT NOT 0; -> 1 mysql>SELECT NOT NULL; -> NULL mysql>SELECT ! (1+1); -> 0 mysql>SELECT ! 1+1; -> 1最后一个示例的产生
1是因为表达式的计算方式与相同(!1)+1。!,运营商是一个非标准MySQL扩展。从MySQL 8.0.17开始,不推荐使用此运算符,并且在将来的MySQL版本中将删除对此运算符的支持。应将应用程序调整为使用标准SQLNOT运算符。AND,&&逻辑与。评估
1是否所有操作数都为非零而不是非NULL,0如果一个或多个操作数为0,NULL则返回,否则返回。mysql>
SELECT 1 AND 1; -> 1 mysql>SELECT 1 AND 0; -> 0 mysql>SELECT 1 AND NULL; -> NULL mysql>SELECT 0 AND NULL; -> 0 mysql>SELECT NULL AND 0; -> 0&&,运营商是一个非标准MySQL扩展。从MySQL 8.0.17开始,不推荐使用此运算符,并且在将来的MySQL版本中将删除对此运算符的支持。应将应用程序调整为使用标准SQLAND运算符。OR,||逻辑或。当两个操作数均为非-时
NULL,结果为1是否有任何操作数非零0。对于一个NULL操作数,结果是1另一个操作数是否非零NULL。如果两个操作数都为NULL,则结果为NULL。mysql>
SELECT 1 OR 1; -> 1 mysql>SELECT 1 OR 0; -> 1 mysql>SELECT 0 OR 0; -> 0 mysql>SELECT 0 OR NULL; -> NULL mysql>SELECT 1 OR NULL; -> 1注意
如果
PIPES_AS_CONCAT启用了SQL模式,则||表示SQL标准的字符串连接运算符(如CONCAT())。||,运营商是一个非标准MySQL扩展。从MySQL 8.0.17开始,不推荐使用此运算符,并且在将来的MySQL版本中将删除对此运算符的支持。应将应用程序调整为使用标准SQLOR运算符。例外:如果PIPES_AS_CONCAT启用,则弃用不适用,因为在这种情况下,||表示字符串连接。XOR逻辑异或。
NULL如果任一操作数为,则返回NULL。对于非NULL操作数,计算1出奇数个操作数是否为非零,否则0返回。mysql>
SELECT 1XOR 1; -> 0 mysql>SELECT 1XOR 0; -> 1 mysql>SELECT 1XOR NULL; -> NULL mysql>SELECT 1XOR 1XOR 1; -> 1a XOR b在数学上等于(a AND(NOT b))OR((NOT a)and b)。
