[ib6] wartosc null na 0
Banderas - 06-01-2006 09:03
[ib6] wartosc null na 0
Witam, W operacjach arytmetycznych jeśli doda się jakąś wartość do null to zawsze zwraca wartość null niezależnie co do niej dodano. W sumie logiczne, lecz często null należy potraktować jako wartość 0, wtedy trzeba dodać kolejne założenia w klauzuli where. Czy jest jakiś sposób na potraktowanie null jako 0 (zero)? Próbowałem cast(kolumna as integer) lecz to nie działa, nadal pozostaje null.
-- Pozdrawiam, Banderas +-------------------------------------------------+ | Miejsce na Twoją reklamę | +-------------------------------------------------+
Wojtek pBT (prac) - 07-01-2006 19:03
Banderas napisał(a): > Witam, > W operacjach arytmetycznych jeśli doda się jakąś wartość do null to > zawsze zwraca wartość null niezależnie co do niej dodano. W sumie > logiczne, lecz często null należy potraktować jako wartość 0, wtedy > trzeba dodać kolejne założenia w klauzuli where. Czy jest jakiś sposób > na potraktowanie null jako 0 (zero)? Próbowałem cast(kolumna as integer) > lecz to nie działa, nadal pozostaje null.
Dla MySQL: IFNULL(kol, 0) albo IF(ISNULL(kol), kol, 0)
pBT
Bartek Dajewski - 07-01-2006 19:03
Cześć.
Użytkownik "Banderas" <gosmo67@pocztaWYTNIJ.onet.pl> napisał w wiadomości news:dpl81a$1nj$1@opal.futuro.pl... > Witam, > W operacjach arytmetycznych jeśli doda się jakąś wartość do null to zawsze > zwraca wartość null niezależnie co do niej dodano. W sumie logiczne, lecz > często null należy potraktować jako wartość 0, wtedy trzeba dodać kolejne > założenia w klauzuli where. Czy jest jakiś sposób na potraktowanie null jako > 0 (zero)? Próbowałem cast(kolumna as integer) lecz to nie działa, nadal > pozostaje null.
Cast nic nie da. Do tego potrzebna jest funkcja w rodzaju coalesce (np. FireBird) czy IsNull (np. MSSQL, MySQL). Jeśli nie możesz zmienić serwera IB na inny (najprościej na FireBird), to pozostaje Ci albo napisanie własnej funkcji i dołączenie jej do bazy albo stworzenie procedury składowanej, w której już dość swobodnie możesz stosować pętle, konstrukcje w rodzaju "if .... is not null" itp.
-- Pozdrawiam :-) Bartek
Trzypion - 07-01-2006 19:03
On Fri, 6 Jan 2006 08:59:31 +0100, "Banderas" <gosmo67@pocztaWYTNIJ.onet.pl> wrote:
>często null należy potraktować jako wartość 0, wtedy trzeba dodać kolejne >założenia w klauzuli where. Czy jest jakiś sposób na potraktowanie null jako >0 (zero)? Próbowałem cast(kolumna as integer) lecz to nie działa, nadal >pozostaje null.
Case A when null then 0 else A
-- ___________ (R) /_ _______ Adam 'Trzypion' Płaszczyca (+48 502) 122 688 ___/ /_ ___ ul. Ludwiki 1 m. 74, 01-226 Warszawa _______/ /_ http://trzypion.oldfield.org.pl/fotk...rterka/II_MPL/ ___________/ GG: 3524356
mhm - 07-01-2006 19:03
Trzypion napisał(a): > On Fri, 6 Jan 2006 08:59:31 +0100, "Banderas" > <gosmo67@pocztaWYTNIJ.onet.pl> wrote: > > >>często null należy potraktować jako wartość 0, wtedy trzeba dodać kolejne >>założenia w klauzuli where. Czy jest jakiś sposób na potraktowanie null jako >>0 (zero)? Próbowałem cast(kolumna as integer) lecz to nie działa, nadal >>pozostaje null. > > > Case A > when null then 0 > else A
cos mi cwierkaja wrobelki, ze to chyba dopiero od ib7.5 (podobnie jak COALESCE i NULLIF)?
-- mhm.
Banderas - 07-01-2006 19:03
Użytkownik "Bartek Dajewski" <bartek@UsunTo.tradiss.com.pl> napisał w wiadomości news:dpldcu$7i2$1@213.186.83.151... > Cześć. > > Użytkownik "Banderas" <gosmo67@pocztaWYTNIJ.onet.pl> napisał w wiadomości > news:dpl81a$1nj$1@opal.futuro.pl... >> Witam, >> W operacjach arytmetycznych jeśli doda się jakąś wartość do null to >> zawsze >> zwraca wartość null niezależnie co do niej dodano. W sumie logiczne, lecz >> często null należy potraktować jako wartość 0, wtedy trzeba dodać kolejne >> założenia w klauzuli where. Czy jest jakiś sposób na potraktowanie null > jako >> 0 (zero)? Próbowałem cast(kolumna as integer) lecz to nie działa, nadal >> pozostaje null. > > Cast nic nie da. Do tego potrzebna jest funkcja w rodzaju coalesce (np. > FireBird) czy IsNull (np. MSSQL, MySQL). Jeśli nie możesz zmienić serwera > IB > na inny (najprościej na FireBird), to pozostaje Ci albo napisanie własnej > funkcji i dołączenie jej do bazy albo stworzenie procedury składowanej, w > której już dość swobodnie możesz stosować pętle, konstrukcje w rodzaju "if > ... is not null" itp.
Wielki dzięki, bo przechodzimy na FB powolutku (czekamy na sprzęt). coalesce to to o co mi chodziło.
-- Pozdrawiam, Banderas +-------------------------------------------------+ | Miejsce na Twoją reklamę | +-------------------------------------------------+
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Zwracanie wartości, z funkcji, w funkcji [Js, Ajax]
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird)
Ms SQL Server 2000 i błąd przy nie wypełnionej wartościo w polusmalldatetime
Jak wyswietlic dane z dwoch tabel gdy dla jednej z nich jest brak jest danej wartosci
[mysql 4.0.24] INSERT do tabeli z automatyczną inkrementacją wartości pola.
=?iso-8859-1?q?mysql_domyslna_wartosc_kom=F3rki?=
[Oracle] PLSQL - wartosc z innego pola w zmienianaym rekordzie
[MySQL] wektor wartosci jako typ danej?
dynamiczny sql w plsql, szukanie wartosci w kolumnach
zanotowane.pldoc.pisz.plpdf.pisz.plshutter.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|