Home > database >  Mysql 5.7 for a NULL value judgment is NULL and is not what is the difference between a NULL? God, p
Mysql 5.7 for a NULL value judgment is NULL and is not what is the difference between a NULL? God, p

Time:10-04

Table structure is as follows:
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
The CREATE TABLE ` test ` (
` id ` int (11) NOT NULL,
` sex ` tinyint (1) NOT NULL,
` name ` char (1) NOT NULL,
` age ` int (11), NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Add the following data:
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
INSERT INTO ` test ` (` id `, ` sex `, ` name `, ` age `) VALUES
A1 (1, 1, ' ', 12),
(2, 0, 'b1, 13),
A1 (3, 1, ' ', 12),
(4, 0, 'b1, 13),
(5, 1, 'a2', 15),
(6, 0, 'b2, 16),
(7, 0 'b3, 18),
(a3, 8, 1, 19),
(9, 0 'b4, 21).
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Respectively, perform the following grouping SQL statement
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1,
The SELECT sex,
If (sex is null, the ' ', group_concat (name)) as name1
The FROM ` test ` group by sex with ROLLUP
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Sex name1
0 b1, b1, b2, b3, b4
1 a1, a1, a2, a3
NULL b1, b1, b2, b3, b4, a1, a1, a2, a3
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
2,
The SELECT sex,
If (sex is not null, group_concat (name), ' ') as name1
The FROM ` test ` group by sex with ROLLUP
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Sex name1
0 b1, b1, b2, b3, b4
1 a1, a1, a2, a3
NULL
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Question: why is the not null determine that sex is not null, and is null cannot judge success???????

CodePudding user response:

Using isnull function judgment result is the same with is null, the if (` fieldname ` is null, 'a', 'b') and the if (` fieldname ` is not null, 'b', 'a') should be the same on the logic, the actual results are not the same!

CodePudding user response:

Some people see? Is is null is not reliable?

CodePudding user response:

Before there was a similar problem, the estimate is BUG
The alter table test the modify ` sex ` tinyint (1) the NULL;
After the check IS correct, you seem lazy IS NULL, if the column IS defined as NOT NULL, there will NOT be a NULL value IS fixed judgment, without considering the ROLLUP this
  • Related