Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> case when null [rozwiązany], Firebird
icemanwlkp
post 17.11.2017, 11:16:00
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 29.09.2010

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował icemanwlkp 17.11.2017, 12:00:52
Go to the top of the page
+Quote Post
trueblue
post 17.11.2017, 11:24:29
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
icemanwlkp
post 17.11.2017, 11:32:11
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 29.09.2010

Ostrzeżenie: (0%)
-----


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


Ten post edytował icemanwlkp 17.11.2017, 11:43:55
Go to the top of the page
+Quote Post
trueblue
post 17.11.2017, 11:34:25
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Ach, to Firebird, moje niedopatrzenie.
W takim razie może taka konstrukcja: https://firebirdsql.org/refdocs/langrefupd15-coalesce.html


--------------------
Go to the top of the page
+Quote Post
icemanwlkp
post 17.11.2017, 11:45:39
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 29.09.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
viking
post 17.11.2017, 11:54:35
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A jak wyrzucisz to pierwsze expression i samo
case when d.id_sklepu IS NULL then 1 end


--------------------
Go to the top of the page
+Quote Post
icemanwlkp
post 17.11.2017, 11:59:55
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 29.09.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
viking
post 17.11.2017, 12:17:27
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Nie powinno. Else z tego co widzę jest opcjonalne. Masz jeszcze krótsze https://firebirdsql.org/refdocs/langrefupd20-iif.html


--------------------
Go to the top of the page
+Quote Post
trueblue
post 17.11.2017, 12:26:27
Post #9





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
icemanwlkp
post 17.11.2017, 14:28:35
Post #10





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 29.09.2010

Ostrzeżenie: (0%)
-----


Dzięki też działa właśćiwie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 14:47