Description:
Hi, MySQL developers,
Please see the below cases.
I perform some join queries, and I meet the unexpected result of inner join. However, the left join in this case behaves well.
```
CREATE TABLE t0(c0 INT ZEROFILL);
CREATE TABLE t1(c0 INT);
INSERT INTO t0(c0) VALUES (0);
INSERT INTO t1(c0) VALUES (NULL);
SELECT *
FROM t0
INNER JOIN t1
ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0)));
-- 0, NULL
SELECT *
FROM t0
INNER JOIN t1
ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0)))
WHERE NOT(t0.c0);
-- empty result
-- wrong, should be same as the preceding query
SELECT *
FROM t0
LEFT JOIN t1
ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0)));
-- 0, NULL
SELECT *
FROM t0
LEFT JOIN t1
ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0)))
WHERE NOT(t0.c0);
-- 0, NULL
```
How to repeat:
```
CREATE TABLE t0(c0 INT ZEROFILL);
CREATE TABLE t1(c0 INT);
INSERT INTO t0(c0) VALUES (0);
INSERT INTO t1(c0) VALUES (NULL);
SELECT *
FROM t0
INNER JOIN t1
ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0)));
-- 0, NULL
SELECT *
FROM t0
INNER JOIN t1
ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0)))
WHERE NOT(t0.c0);
-- empty result
-- wrong, should be same as the preceding query
```
Description: Hi, MySQL developers, Please see the below cases. I perform some join queries, and I meet the unexpected result of inner join. However, the left join in this case behaves well. ``` CREATE TABLE t0(c0 INT ZEROFILL); CREATE TABLE t1(c0 INT); INSERT INTO t0(c0) VALUES (0); INSERT INTO t1(c0) VALUES (NULL); SELECT * FROM t0 INNER JOIN t1 ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0))); -- 0, NULL SELECT * FROM t0 INNER JOIN t1 ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0))) WHERE NOT(t0.c0); -- empty result -- wrong, should be same as the preceding query SELECT * FROM t0 LEFT JOIN t1 ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0))); -- 0, NULL SELECT * FROM t0 LEFT JOIN t1 ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0))) WHERE NOT(t0.c0); -- 0, NULL ``` How to repeat: ``` CREATE TABLE t0(c0 INT ZEROFILL); CREATE TABLE t1(c0 INT); INSERT INTO t0(c0) VALUES (0); INSERT INTO t1(c0) VALUES (NULL); SELECT * FROM t0 INNER JOIN t1 ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0))); -- 0, NULL SELECT * FROM t0 INNER JOIN t1 ON NOT(IF(t1.c0, 1, t0.c0)) LIKE ((- (t0.c0))) WHERE NOT(t0.c0); -- empty result -- wrong, should be same as the preceding query ```