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.