Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на оператор Case с IS NULL и IS NOT NULL

Използвате неправилно case изразяване. Има две форми. Формата, която искате е:

(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 , поради което има съвпадение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кое съпоставяне на MySQL е най-добро за приемане на всички уникод символи?

  2. PDO грешка:SQLSTATE[HY000]:Обща грешка:2031

  3. Няма OQGraph в моя MariaDB?

  4. MYSQL/PHP SELECT DISTINCT

  5. MySQL търси 1,2,3,11,22,33 в полето