---
title: "Kolla int värde"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/150481-kolla-int-värde"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Dino"
published: "2006-08-24T10:01:06.000Z"
updated: "2006-08-24T18:13:06.000Z"
replies: 9
views: 527
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/150481-kolla-int-värde"
---

# Kolla int värde

## #1 — Dino, 2006-08-24T10:01Z

Vilket sätt är korrekt då Selecten inte säkert retunerar något.

```
DECLARE @total int;
SET @total = (SELECT t.Amount FROM Table1 t WHERE t.Id = @id)

Alt 1.
IF(@total > 0)
   ...

Alt 2.
IF(@total > NULL)
   ...

Alt 3.
IF(@total IS NOT NULL)
   ...
```

Permalänk: https://www.webforum.nu/p/150481

## #2 — @nders, 2006-08-24T10:05Z

Jag tänker inte ens fundera innan du berättar vilken dbms du använder.

Permalänk: https://www.webforum.nu/p/1858025

## #3 — Dino, 2006-08-24T10:06Z

Sql Server 2005. Finns det någon annan? ;)

Permalänk: https://www.webforum.nu/p/1858026

## #4 — LarsG, 2006-08-24T10:29Z

Vad vill du? Är du intresserad av värdet på amount eller vill du bara veta om det finns någon post? Kan det finnas flera poster för samma id?

Permalänk: https://www.webforum.nu/p/1858029

## #5 — @nders, 2006-08-24T10:30Z

Jag hade gjort så här:

```
SET @total = COALESCE((SELECT t.Amount FROM Table1 t WHERE t.Id = @id), 0)
```

, och kört på alternativ 1.

mvh

Permalänk: https://www.webforum.nu/p/1858031

## #6 — Dino, 2006-08-24T10:51Z

Ok, ändrar helt för att göra det tydligare. Selecten retunerar bara en post. Använder Alt 1 just nu och det verkar fungera, men är det rätt.

```
DECLARE @id int, @total int;
SELECT @id = t.Id, @total = t.Amount 
FROM Table2 t 
WHERE t.Table1Id = @table1id AND t.Key = @key;

[B]Alt 1.[/B]
IF(@id > 0)
   BEGIN
      UPDATE Table2 SET Amount = Amount + @total WHERE Id = @id;
   END
ELSE
   BEGIN
      INSERT INTO Table2(Amount) VALUES(@total);
   END

[B]Alt 2.[/B]
IF(@total > NULL)
   BEGIN
      UPDATE Table2 SET Amount = Amount + @total WHERE Id = @id;
   END
ELSE
   BEGIN
      INSERT INTO Table2(Amount) VALUES(@total);
   END

[B]Alt 3.[/B]
IF(@total IS NOT NULL)
   BEGIN
      UPDATE Table2 SET Amount = Amount + @total WHERE Id = @id;
   END
ELSE
   BEGIN
      INSERT INTO Table2(Amount) VALUES(@total);
   END
```

Permalänk: https://www.webforum.nu/p/1858034

## #7 — LarsG, 2006-08-24T11:06Z

Strunta i select, gör update direkt och om @@rowcount = 0, gör insert

Permalänk: https://www.webforum.nu/p/1858041

## #8 — Dino, 2006-08-24T16:49Z

Sqlen jag håller på med är lite mer komplicerad än så, så i detta fallet fungerar inte det. Men bra tips att ta med mig.

Vill dock fortfarande ha svar på vilket alternativ som är det korrekta att kolla ovan villkor på.

Permalänk: https://www.webforum.nu/p/1858140

## #9 — @nders, 2006-08-24T16:58Z

Det är lite svårt för oss att besvara, när du inte ger oss hela frågan. Vi har svarat efter bästa förmåga enl. de uppgifter du gett oss.

Permalänk: https://www.webforum.nu/p/1858144

## #10 — Dino, 2006-08-24T18:13Z

LarsGs alternativ visade sig, som vanligt, fungerade bra. Tackar.

Permalänk: https://www.webforum.nu/p/1858160

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/150481-kolla-int-värde
