Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie instrukcji Case With IS NULL i IS NOT NULL

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użycie ALTER do usunięcia kolumny, jeśli istnieje w MySQL

  2. Migracja z Oracle do MySQL

  3. Czy istnieje sposób na wsteczne tworzenie UUID opartego na czasie/węźle w PHP?

  4. Jak uzyskać ostatnio wstawiony identyfikator tabeli MySQL w PHP?

  5. Znajdź najbliższą szerokość/długość geograficzną za pomocą zapytania SQL