|
| fra <NULL> til et rigtigt 0 Fra : Thomas Nielsen |
Dato : 18-12-01 14:17 |
|
Hej
Jeg har en tabel med nogle rækker i hvor jeg vil tælle op hvor mange der er
der matcher et bestemt id.
Er der ingen der matcher retunere min COUNT et <NULL> og det er ikke så godt
da jeg senere i min stored procedure skal regne med dette tal, altså trække
det fra et andet og se om resultatet af det er større end en anden værdi.
Hvordan konventerer jeg <NULL> til 0?
/Thomas
| |
Jonas Koch Bentzen (18-12-2001)
| Kommentar Fra : Jonas Koch Bentzen |
Dato : 18-12-01 14:49 |
|
Thomas Nielsen skrev:
>
> Er der ingen der matcher retunere min COUNT et <NULL> og det er ikke
> så godt da jeg senere i min stored procedure skal regne med dette tal,
> altså trække det fra et andet og se om resultatet af det er større end
> en anden værdi.
>
> Hvordan konventerer jeg <NULL> til 0?
En enkel måde at gøre det på ville være følgende:
UPDATE tabel SET kolonne = 0 WHERE kolonne IS NULL;
Og så ændrer du bagefter kolonnedefinitionen således at default er 0 i
stedet for NULL.
--
Jonas Koch Bentzen
http://understroem.dk/
| |
Martin Elkjær Nielse~ (19-12-2001)
| Kommentar Fra : Martin Elkjær Nielse~ |
Dato : 19-12-01 10:08 |
|
"Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> skrev i en meddelelse
news:9vnhh0$crn$1@sunsite.dk...
> Thomas Nielsen skrev:
> >
> > Er der ingen der matcher retunere min COUNT et <NULL> og det er ikke
> > så godt da jeg senere i min stored procedure skal regne med dette tal,
> > altså trække det fra et andet og se om resultatet af det er større end
> > en anden værdi.
> >
> > Hvordan konventerer jeg <NULL> til 0?
>
> En enkel måde at gøre det på ville være følgende:
>
> UPDATE tabel SET kolonne = 0 WHERE kolonne IS NULL;
NEJ!
Thomas's problem er ikke selve tabellen, men derimod det resultatsættet som
kommer ud af hans forespørgsel, som returnerer null.
Martin
| |
Thomas Nielsen (19-12-2001)
| Kommentar Fra : Thomas Nielsen |
Dato : 19-12-01 13:07 |
|
"Martin Elkjær Nielsen" <martin@mecom.dk> wrote in message
news:7OYT7.19$w77.1087@news.get2net.dk...
> NEJ!
> Thomas's problem er ikke selve tabellen, men derimod det resultatsættet
som
> kommer ud af hans forespørgsel, som returnerer null.
Lige præcis.
/Thomas
| |
Stig Johansen (20-12-2001)
| Kommentar Fra : Stig Johansen |
Dato : 20-12-01 06:01 |
|
Thomas Nielsen wrote:
> "Martin Elkjær Nielsen" <martin@mecom.dk> wrote in message
> news:7OYT7.19$w77.1087@news.get2net.dk...
>> NEJ!
>> Thomas's problem er ikke selve tabellen, men derimod det resultatsættet
> som
>> kommer ud af hans forespørgsel, som returnerer null.
>
Kig på funktionen IsNull.
--
Med venlig hilsen / Best regards
Stig Johansen
linux@w3data.dk
| |
Jonas Koch Bentzen (19-12-2001)
| Kommentar Fra : Jonas Koch Bentzen |
Dato : 19-12-01 16:34 |
|
Martin Elkjær Nielsen skrev:
>
> "Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> skrev i en
> meddelelse news:9vnhh0$crn$1@sunsite.dk...
>> Thomas Nielsen skrev:
>> >
>> > Er der ingen der matcher retunere min COUNT et <NULL> og det er
>> > ikke så godt da jeg senere i min stored procedure skal regne med
>> > dette tal, altså trække det fra et andet og se om resultatet af det
>> > er større end en anden værdi.
>> >
>> > Hvordan konventerer jeg <NULL> til 0?
>>
>> En enkel måde at gøre det på ville være følgende:
>>
>> UPDATE tabel SET kolonne = 0 WHERE kolonne IS NULL;
>
> NEJ!
Rolig nu.
> Thomas's problem er ikke selve tabellen, men derimod det
> resultatsættet som kommer ud af hans forespørgsel, som returnerer
> null.
Det er jeg godt klar over. Men jeg vil mene, at det er dårlig
tabelopbygning at lade default i kolonnen være null, hvis han fra
starten af ved, at han skal bruge kolonnen i udregninger på den måde,
han beskrev.
--
Jonas Koch Bentzen
http://understroem.dk/
| |
Peter Lykkegaard (19-12-2001)
| Kommentar Fra : Peter Lykkegaard |
Dato : 19-12-01 19:54 |
|
"Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> wrote in message
news:9vqc16$58f$1@sunsite.dk...
> Martin Elkjær Nielsen skrev:
> >
> > "Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> skrev i en
> > meddelelse news:9vnhh0$crn$1@sunsite.dk...
> >> Thomas Nielsen skrev:
> >> >
> >> > Er der ingen der matcher retunere min COUNT et <NULL> og det er
> >> > ikke så godt da jeg senere i min stored procedure skal regne med
> >> > dette tal, altså trække det fra et andet og se om resultatet af det
> >> > er større end en anden værdi.
> >> >
> >> > Hvordan konventerer jeg <NULL> til 0?
> >>
> >> En enkel måde at gøre det på ville være følgende:
> >>
> >> UPDATE tabel SET kolonne = 0 WHERE kolonne IS NULL;
> >
> > NEJ!
>
> Rolig nu.
>
> > Thomas's problem er ikke selve tabellen, men derimod det
> > resultatsættet som kommer ud af hans forespørgsel, som returnerer
> > null.
>
> Det er jeg godt klar over. Men jeg vil mene, at det er dårlig
> tabelopbygning at lade default i kolonnen være null, hvis han fra
> starten af ved, at han skal bruge kolonnen i udregninger på den måde,
> han beskrev.
>
Man skal have en endog meget god grund til at lave det på den måde du
foreslår
Det er jo ret enkelt at filtrere kolonner fra hvor værdien er "ikke
defineret" - dvs null
Ved at sætte default til 0 tager man jo stilling til indholdet for alle
poster hvor værdien ikke kan (eller skal) defineres af den ene eller anden
årsag
mvh/Peter Lykkegaard
| |
Thomas Nielsen (20-12-2001)
| Kommentar Fra : Thomas Nielsen |
Dato : 20-12-01 08:14 |
|
"Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> wrote in message
news:9vqc16$58f$1@sunsite.dk...
> Det er jeg godt klar over. Men jeg vil mene, at det er dårlig
> tabelopbygning at lade default i kolonnen være null, hvis han fra
> starten af ved, at han skal bruge kolonnen i udregninger på den måde,
> han beskrev.
Det er så din mening. Jeg mener bestemt ikke værdien NULL er en dårlig
værdi. Og om jeg ændrede det til en 0 i selve databasen ville ikke ændre
noget på min select når den laver en count som desværre returnere NULL når
der ingen poster findes på mine kriterier i den tabel jeg laver count på.
/Thomas
| |
Martin Elkjær Nielse~ (20-12-2001)
| Kommentar Fra : Martin Elkjær Nielse~ |
Dato : 20-12-01 19:57 |
|
"Jonas Koch Bentzen" <ingen.emailadresse@eksempel.dk> skrev i en meddelelse
news:9vqc16$58f$1@sunsite.dk...
> >
> > NEJ!
>
> Rolig nu.
Okay
>
> > Thomas's problem er ikke selve tabellen, men derimod det
> > resultatsættet som kommer ud af hans forespørgsel, som returnerer
> > null.
>
> Det er jeg godt klar over. Men jeg vil mene, at det er dårlig
> tabelopbygning at lade default i kolonnen være null, hvis han fra
> starten af ved, at han skal bruge kolonnen i udregninger på den måde,
> han beskrev.
Okay, så forestil dig du har en tabel med et datofelt for oprettelsen af
recorden og et andet datofelt for hvornår data i recorden er
færdigbehandlet. Hvilken default værdi ville du vælge til dette felt ??
Og hvilke værdier der vælges som default værdier på felterne har desuden
ingen indvirkning på resultat af en count forespørgsel, det har derimod
betingelser i forespørgslen.
mvh
Martin
| |
Martin Elkjær Nielse~ (19-12-2001)
| Kommentar Fra : Martin Elkjær Nielse~ |
Dato : 19-12-01 10:09 |
|
Hej Thomas,
hvillken db bruger du ??
mvh
Martin
"Thomas Nielsen" <thomas@websup.dk> skrev i en meddelelse
news:WmHT7.54$_06.2315@news.get2net.dk...
> Hej
>
> Jeg har en tabel med nogle rækker i hvor jeg vil tælle op hvor mange der
er
> der matcher et bestemt id.
>
> Er der ingen der matcher retunere min COUNT et <NULL> og det er ikke så
godt
> da jeg senere i min stored procedure skal regne med dette tal, altså
trække
> det fra et andet og se om resultatet af det er større end en anden værdi.
>
> Hvordan konventerer jeg <NULL> til 0?
>
> /Thomas
>
>
| |
Thomas Nielsen (19-12-2001)
| Kommentar Fra : Thomas Nielsen |
Dato : 19-12-01 13:07 |
|
"Martin Elkjær Nielsen" <martin@mecom.dk> wrote in message
news:6PYT7.20$w77.1261@news.get2net.dk...
> hvillken db bruger du ??
Ms SQL 2000 server
/Thomas
| |
Martin Elkjær Nielse~ (20-12-2001)
| Kommentar Fra : Martin Elkjær Nielse~ |
Dato : 20-12-01 20:00 |
|
"Thomas Nielsen" <thomas@websup.dk> skrev i en meddelelse
news:Rr%T7.39$w77.2238@news.get2net.dk...
> "Martin Elkjær Nielsen" <martin@mecom.dk> wrote in message
> news:6PYT7.20$w77.1261@news.get2net.dk...
> > hvillken db bruger du ??
>
> Ms SQL 2000 server
>
Havde det været Oracle kunne du såmænd bare have brugt nvl-funktionen.
Der må findes noget tilsvarende for MS SQL.
Martin
| |
Svend Weiersøe Niels~ (22-12-2001)
| Kommentar Fra : Svend Weiersøe Niels~ |
Dato : 22-12-01 22:29 |
|
"Thomas Nielsen" <thomas@websup.dk> skrev i en meddelelse
news:WmHT7.54$_06.2315@news.get2net.dk...
> Hej
>
> Jeg har en tabel med nogle rækker i hvor jeg vil tælle op hvor mange der
er
> der matcher et bestemt id.
>
> Er der ingen der matcher retunere min COUNT et <NULL> og det er ikke så
godt
> da jeg senere i min stored procedure skal regne med dette tal, altså
trække
> det fra et andet og se om resultatet af det er større end en anden værdi.
>
> Hvordan konventerer jeg <NULL> til 0?
>
> /Thomas
>
>
Mange basesystemer (db2, access mm) har en COALESCE funktion.
COALESCE returns the first argument that is not null.
The arguments are evaluated in the order in which they are specified, and
the result of the function is the first argument that is not null. The
result can be null only if all the arguments can be null, and the result is
null only if all the arguments are null.
SW
| |
|
|