1DROP TABLE IF EXISTS t1;
2SELECT IF(NULL AND 1, 1, 2), IF(1 AND NULL, 1, 2);
3IF(NULL AND 1, 1, 2)	IF(1 AND NULL, 1, 2)
42	2
5SELECT NULL AND 1, 1 AND NULL, 0 AND NULL, NULL and 0;
6NULL AND 1	1 AND NULL	0 AND NULL	NULL and 0
7NULL	NULL	0	0
8create table t1 (a int);
9insert into t1 values (0),(1),(NULL);
10SELECT * FROM t1 WHERE IF(a AND 1, 0, 1);
11a
120
13NULL
14SELECT * FROM t1 WHERE IF(1 AND a, 0, 1);
15a
160
17NULL
18SELECT * FROM t1 where NOT(a AND 1);
19a
200
21SELECT * FROM t1 where NOT(1 AND a);
22a
230
24SELECT * FROM t1 where (a AND 1)=0;
25a
260
27SELECT * FROM t1 where (1 AND a)=0;
28a
290
30SELECT * FROM t1 where (1 AND a)=1;
31a
321
33SELECT * FROM t1 where (1 AND a) IS NULL;
34a
35NULL
36set sql_mode='high_not_precedence';
37select * from t1 where not a between 2 and 3;
38a
39set sql_mode=default;
40select * from t1 where not a between 2 and 3;
41a
420
431
44select a, a is false, a is true, a is unknown from t1;
45a	a is false	a is true	a is unknown
460	1	0	0
471	0	1	0
48NULL	0	0	1
49select a, a is not false, a is not true, a is not unknown from t1;
50a	a is not false	a is not true	a is not unknown
510	0	1	1
521	1	0	1
53NULL	1	1	0
54SET @a=0, @b=0;
55SELECT * FROM t1 WHERE NULL AND (@a:=@a+1);
56a
57SELECT * FROM t1 WHERE NOT(a>=0 AND NULL AND (@b:=@b+1));
58a
59SELECT * FROM t1 WHERE a=2 OR (NULL AND (@a:=@a+1));
60a
61SELECT * FROM t1 WHERE NOT(a=2 OR (NULL AND (@b:=@b+1)));
62a
63DROP TABLE t1;
64create table t1 (a int, b int);
65insert into t1 values(null, null), (0, null), (1, null), (null, 0), (null, 1), (0, 0), (0, 1), (1, 0), (1, 1);
66select ifnull(A, 'N') as A, ifnull(B, 'N') as B, ifnull(not A, 'N') as nA, ifnull(not B, 'N') as nB, ifnull(A and B, 'N') as AB, ifnull(not (A and B), 'N') as `n(AB)`, ifnull((not A or not B), 'N') as nAonB, ifnull(A or B, 'N') as AoB, ifnull(not(A or B), 'N') as `n(AoB)`, ifnull(not A and not B, 'N') as nAnB from t1;
67A	B	nA	nB	AB	n(AB)	nAonB	AoB	n(AoB)	nAnB
68N	N	N	N	N	N	N	N	N	N
690	N	1	N	0	1	1	N	N	N
701	N	0	N	N	N	N	1	0	0
71N	0	N	1	0	1	1	N	N	N
72N	1	N	0	N	N	N	1	0	0
730	0	1	1	0	1	1	0	1	1
740	1	1	0	0	1	1	1	0	0
751	0	0	1	0	1	1	1	0	0
761	1	0	0	1	0	0	1	0	0
77select ifnull(A=1, 'N') as A, ifnull(B=1, 'N') as B, ifnull(not (A=1), 'N') as nA, ifnull(not (B=1), 'N') as nB, ifnull((A=1) and (B=1), 'N') as AB, ifnull(not ((A=1) and (B=1)), 'N') as `n(AB)`, ifnull((not (A=1) or not (B=1)), 'N') as nAonB, ifnull((A=1) or (B=1), 'N') as AoB, ifnull(not((A=1) or (B=1)), 'N') as `n(AoB)`, ifnull(not (A=1) and not (B=1), 'N') as nAnB from t1;
78A	B	nA	nB	AB	n(AB)	nAonB	AoB	n(AoB)	nAnB
79N	N	N	N	N	N	N	N	N	N
800	N	1	N	0	1	1	N	N	N
811	N	0	N	N	N	N	1	0	0
82N	0	N	1	0	1	1	N	N	N
83N	1	N	0	N	N	N	1	0	0
840	0	1	1	0	1	1	0	1	1
850	1	1	0	0	1	1	1	0	0
861	0	0	1	0	1	1	1	0	0
871	1	0	0	1	0	0	1	0	0
88drop table t1;
89