mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
925cd76bc9
Redo of changeset I commited, but failed to push mysql-test/r/bool.result: Added tests for boolean operators in select part mysql-test/t/bool.test: Added tests for boolean operators in select part
74 lines
2.2 KiB
Text
74 lines
2.2 KiB
Text
DROP TABLE IF EXISTS t1;
|
|
SELECT IF(NULL AND 1, 1, 2), IF(1 AND NULL, 1, 2);
|
|
IF(NULL AND 1, 1, 2) IF(1 AND NULL, 1, 2)
|
|
2 2
|
|
SELECT NULL AND 1, 1 AND NULL, 0 AND NULL, NULL and 0;
|
|
NULL AND 1 1 AND NULL 0 AND NULL NULL and 0
|
|
NULL NULL 0 0
|
|
create table t1 (a int);
|
|
insert into t1 values (0),(1),(NULL);
|
|
SELECT * FROM t1 WHERE IF(a AND 1, 0, 1);
|
|
a
|
|
0
|
|
NULL
|
|
SELECT * FROM t1 WHERE IF(1 AND a, 0, 1);
|
|
a
|
|
0
|
|
NULL
|
|
SELECT * FROM t1 where NOT(a AND 1);
|
|
a
|
|
0
|
|
SELECT * FROM t1 where NOT(1 AND a);
|
|
a
|
|
0
|
|
SELECT * FROM t1 where (a AND 1)=0;
|
|
a
|
|
0
|
|
SELECT * FROM t1 where (1 AND a)=0;
|
|
a
|
|
0
|
|
SELECT * FROM t1 where (1 AND a)=1;
|
|
a
|
|
1
|
|
SELECT * FROM t1 where (1 AND a) IS NULL;
|
|
a
|
|
NULL
|
|
SET @a=0, @b=0;
|
|
SELECT * FROM t1 WHERE NULL AND (@a:=@a+1);
|
|
a
|
|
SELECT * FROM t1 WHERE NOT(a>=0 AND NULL AND (@b:=@b+1));
|
|
a
|
|
SELECT * FROM t1 WHERE a=2 OR (NULL AND (@a:=@a+1));
|
|
a
|
|
SELECT * FROM t1 WHERE NOT(a=2 OR (NULL AND (@b:=@b+1)));
|
|
a
|
|
SELECT @a, @b;
|
|
@a @b
|
|
0 6
|
|
DROP TABLE t1;
|
|
drop table if exists t;
|
|
create table t(a int, b int);
|
|
insert into t values(null, null), (0, null), (1, null), (null, 0), (null, 1), (0, 0), (0, 1), (1, 0), (1, 1);
|
|
select 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 t;
|
|
A B nA nB AB n(AB) nAonB AoB n(AoB) nAnB
|
|
N N N N N N N N N N
|
|
0 N 1 N 0 1 1 N N N
|
|
1 N 0 N N N N 1 0 0
|
|
N 0 N 1 0 1 1 N N N
|
|
N 1 N 0 N N N 1 0 0
|
|
0 0 1 1 0 1 1 0 1 1
|
|
0 1 1 0 0 1 1 1 0 0
|
|
1 0 0 1 0 1 1 1 0 0
|
|
1 1 0 0 1 0 0 1 0 0
|
|
select 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 t;
|
|
A B nA nB AB n(AB) nAonB AoB n(AoB) nAnB
|
|
N N N N N N N N N N
|
|
0 N 1 N 0 1 1 N N N
|
|
1 N 0 N N N N 1 0 0
|
|
N 0 N 1 0 1 1 N N N
|
|
N 1 N 0 N N N 1 0 0
|
|
0 0 1 1 0 1 1 0 1 1
|
|
0 1 1 0 0 1 1 1 0 0
|
|
1 0 0 1 0 1 1 1 0 0
|
|
1 1 0 0 1 0 0 1 0 0
|
|
drop table t;
|