逻辑运算符
逻辑运算符
名称 | 描述 |
---|---|
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)
。