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
```