Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


0 istället för Null med sum() [LÖST]

Postades av 2002-12-05 14:03:33 - Rickard Nordström, i forum databaser, Tråden har 6 Kommentarer och lästs av 711 personer

Någon som vet något bra sätt att få o (noll) i ställer för Null när man använder sum(). när man använder count() så blir det 0 när setter är tomt. Men om det inte finns något att räkna när man använder sum() så returneras Null. Vill inte göra massa Null kontroller i koden utan lösa det i en SP. Någon som har en bra lösning?

/Rickard

Löste det genom följande funktion:
<code>
CREATE FUNCTION dbo.NullToNill(@val int)
RETURNS int
AS
BEGIN

DECLARE @Value int

IF(@val = NULL)
Begin
Select @Value=0
End
Else
Select @Value=@Val

return(@Value)
end

</code>
Så att: dbo.NullToNill(sum(tOrderRow.numberOf))

Andra förslag är välkomna!


Svara

Sv: 0 istället för Null med sum() [LÖST]

Postades av 2002-12-05 14:47:50 - Christoffer Hedgate

För det första, att kontrollera om ett värde är NULL ska _inte_ göras så här:

IF(@val = NULL)

utan så här:

IF @val IS NULL

Sen så kan väl inte ditt exempel fungera som du tänkt?

dbo.NullToNill(sum(tOrderRow.numberOf)) borde väl vara SUM(dbo.NullToNill(tOrderRow.numberOf)), eller?

Slutligen så finns det redan två olika funktioner för att byta ut ett värde som är NULL mot något annat, och du bör förstås använda en av dessa istället för din egen:

SELECT SUM(COALESCE(tOrderRow.numberOf, 0))
SELECT SUM(ISNULL(tOrderRow.numberOf, 0))

Läs mer i Books Online om dessa om du vill veta mer.


Svara

Sv: 0 istället för Null med sum() [LÖST]

Postades av 2002-12-05 14:59:19 - Emma Magnusson

Varför använder du inte ISNULL(@varde, 0)

Om @varde är NULL kommer 0 att användas i exemplet ovan.

/Emma


Svara

Sv: 0 istället för Null med sum() [LÖST]

Postades av 2002-12-05 15:09:14 - Andreas Hillqvist

Är det oerhört innefektivt att skriva:

SELECT SUM(COALESCE(tOrderRow.numberOf, 0))
SELECT SUM(ISNULL(tOrderRow.numberOf, 0))

Eftersom funktionen måste köras för varje post. Jämfört mot:

SELECT COALESCE(SUM(tOrderRow.numberOf), 0)
SELECT ISNULL(SUM(tOrderRow.numberOf), 0)

Där funktionen anropas en gång med resultatet. Eller optimerar SQL motorn om detta?



Svara

Sv: 0 istället för Null med sum() [LÖST]

Postades av 2002-12-05 16:03:22 - Rickard Nordström

Aha, IsNull var ju en bra funktion. Tänkte väl att det fanns någon sådan funktion... Men funktionen som jag gjort fungerar ypperligt också dock slöare etc etc

Tackar!


Svara

Sv: 0 istället för Null med sum() [LÖST]

Postades av 2002-12-05 16:37:05 - Christoffer Hedgate

Ja, din funktion kommer att vara mycket långsammare därför att den måste anropas en gång för varje rad i resultatet, vilket tar lång tid med UDFer medan ISNULL och COALESCE är optimerade för det.


Svara

Sv: 0 istället för Null med sum() [LÖST]

Postades av 2002-12-05 16:42:10 - Christoffer Hedgate

SELECT SUM(COALESCE(tOrderRow.numberOf, 0))

är inte samma sak som

SELECT COALESCE(SUM(tOrderRow.numberOf), 0)

Så svaret är nej, SQL motorn 'optimerar' inte det, eftersom man då hade kunnat få fel resultat. :)


Svara

Nyligen

  • 17:03 Getmancar your go-to carsharing
  • 14:07 Games
  • 17:54 Vegastars New Zealand
  • 16:56 Verde Casino Danmark
  • 13:54 Vegastars: Top Australian Online C
  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 988
27 965
271 785
66
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies