Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: case when null [rozwiązany]
Forum PHP.pl > Forum > Bazy danych
icemanwlkp
Witam, mam problem przy select

  1. SELECT cast((case d.id_sklepu when d.id_sklepu IS NULL then 1 end) AS smallint) id_sklepy FROM dokmag d


niestety nadal gdy pole d.id_sklepu ma wartość NULL nie zamienia mi na 1 , czy coś mam tu źle napisane ?
trueblue
A po co do tego CASE? Już IF byłby czytelniejszy, a najlepiej: https://dev.mysql.com/doc/refman/5.7/en/con...function_ifnull
icemanwlkp
firebird nie obsługuje if w fukcji case , taki zapis tez nei działa ,albo zostaje NULL albo wszystko ma 1

  1. SELECT case when (d.id_sklepu IS NULL) then 1 end FROM dokmag d
trueblue
Ach, to Firebird, moje niedopatrzenie.
W takim razie może taka konstrukcja: https://firebirdsql.org/refdocs/langrefupd15-coalesce.html
icemanwlkp
Nie ma nic wspolnego z moją potrzebą , chcę select z warunkiem takim ,że jeżeli wartość null to ma zamiast tego w wyniku wstawić 1
viking
A jak wyrzucisz to pierwsze expression i samo
case when d.id_sklepu IS NULL then 1 end
icemanwlkp
jak zrobię tak to działa brakowała else chyba

  1. SELECT case when d.id_sklepu IS NULL then 1 else d.id_sklepu end FROM dokmag d


i mam jak chce zamiast null mam 1 a inna wartości są jak były
viking
Nie powinno. Else z tego co widzę jest opcjonalne. Masz jeszcze krótsze https://firebirdsql.org/refdocs/langrefupd20-iif.html
trueblue
Nie mówiłem o IF w CASE, tylko IF zamiast CASE.

Cytat(icemanwlkp @ 17.11.2017, 11:45:39 ) *
Nie ma nic wspolnego z moją potrzebą , chcę select z warunkiem takim ,że jeżeli wartość null to ma zamiast tego w wyniku wstawić 1

Jak to?
  1. SELECT COALESCE(d.id_sklepu,1) FROM dokmag d
icemanwlkp
Dzięki też działa właśćiwie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.