12.4.3 Logical Operators
Table 12.5 Logical Operators
In SQL, all logical operators evaluate to TRUE, FALSE, or NULL (UNKNOWN). In MySQL, these are implemented as 1 (TRUE), 0 (FALSE), and NULL. Most of this is common to different SQL database servers, although some servers may return any nonzero value for TRUE.
MySQL evaluates any nonzero, non-NULL value to TRUE. For example, the following statements all assess to TRUE:
mysql> SELECT 10 IS TRUE;
-> 1
mysql> SELECT -10 IS TRUE;
-> 1
mysql> SELECT 'string' IS NOT NULL;
-> 1
-
Logical NOT. Evaluates to
1if the operand is0, to0if the operand is nonzero, andNOT NULLreturnsNULL.mysql>
SELECT NOT 10;-> 0 mysql>SELECT NOT 0;-> 1 mysql>SELECT NOT NULL;-> NULL mysql>SELECT ! (1+1);-> 0 mysql>SELECT ! 1+1;-> 1The last example produces
1because the expression evaluates the same way as(!1)+1. -
Logical AND. Evaluates to
1if all operands are nonzero and notNULL, to0if one or more operands are0, otherwiseNULLis returned.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 -
Logical OR. When both operands are non-
NULL, the result is1if any operand is nonzero, and0otherwise. With aNULLoperand, the result is1if the other operand is nonzero, andNULLotherwise. If both operands areNULL, the result isNULL.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;-> 1NoteIf the
PIPES_AS_CONCATSQL mode is enabled,||signifies the SQL-standard string concatenation operator (likeCONCAT()). -
Logical XOR. Returns
NULLif either operand isNULL. For non-NULLoperands, evaluates to1if an odd number of operands is nonzero, otherwise0is returned.mysql>
SELECT 1 XOR 1;-> 0 mysql>SELECT 1 XOR 0;-> 1 mysql>SELECT 1 XOR NULL;-> NULL mysql>SELECT 1 XOR 1 XOR 1;-> 1a XOR bis mathematically equal to(a AND (NOT b)) OR ((NOT a) and b).
© 2025 Oracle
Licensed under the GPLv2 License.