Niewłaściwie używasz case
wyrażenie. Istnieją dwie formy. Żądany formularz to:
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
Uwaga:nie ma userName
po CASE
.
Sprawdza to każdy warunek zatrzymując się na pierwszym.
MySQL interpretuje wartości logiczne jako prawidłową wartość. Twoja wersja to:
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
To zwróci NULL
.
Lub:
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
Przypuszczalnie userName
jest ciągiem. Spowoduje to konwersję userName
do liczby całkowitej na podstawie cyfr wiodących. Jeśli nie ma wiodących cyfr, otrzymasz 0
, dlatego jest dopasowanie.