/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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




Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste