Vous abusez de la case
expression. Il existe deux formes. Le formulaire que vous voulez est :
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
Remarque :Il n'y a pas de userName
après le CASE
.
Ceci vérifie chaque condition en s'arrêtant à la première.
MySQL interprète les booléens comme une valeur valide. Votre version est donc :
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
Cela renverra NULL
.
Ou :
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
Vraisemblablement, userName
est une chaîne. Cela convertira userName
en un entier basé sur les premiers chiffres. S'il n'y a pas de chiffres de tête, vous obtenez 0
, c'est pourquoi il y a une correspondance.