Je misbruikt de case uitdrukking. Er zijn twee vormen. Het gewenste formulier is:
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
Opmerking:er is geen userName na de CASE .
Dit controleert elke voorwaarde die bij de eerste stopt.
MySQL interpreteert booleans als een geldige waarde. Dus jouw versie is ofwel:
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
Dit retourneert NULL .
Of:
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
Vermoedelijk userName is een touwtje. Dit converteert userName naar een geheel getal op basis van voorloopcijfers. Als er geen voorloopcijfers zijn, krijgt u 0 , daarom is er een match.