case
を誤用しています 表現。 2つの形式があります。必要なフォームは次のとおりです:
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
注:userName
はありません CASE
の後 。
これにより、最初に停止する各条件がチェックされます。
MySQLはブール値を有効な値として解釈します。したがって、バージョンは次のいずれかになります。
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
これにより、NULL
が返されます 。
または:
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
おそらく、userName
文字列です。これにより、userName
が変換されます 先頭の数字に基づく整数に。先頭の数字がない場合は、0
を取得します 、それが一致する理由です。