---
title: "Parameter ellr ej i SP"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/123658-parameter-ellr-ej-i-sp"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "ironhead"
published: "2005-03-03T14:44:57.000Z"
updated: "2005-03-09T09:45:13.000Z"
replies: 12
views: 400
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/123658-parameter-ellr-ej-i-sp"
---

# Parameter ellr ej i SP

## #1 — ironhead, 2005-03-03T14:44Z

Hej!

Hur bör man hantera parametrar i SP:s, om jag inte vet om den kommer att innehålla ett värde eller ej?

Om en parameter inte innehåller nåt värde, kanske man inte vill använda den om man t.ex. använder sig av LIKE i SQL-satsen.

med innehåll i parametern @ord

```
SELECT test FROM tabell WHERE val=1 AND @ord='%@ord%'
```

utan innehåll i parametern @ord

```
SELECT test FROM tabell WHERE val=1
```

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

## #2 — LarsG, 2005-03-03T16:06Z

```
SELECT test FROM tabell 
WHERE val=1 
AND (ord like '%' + @ord  + '%' or @ord is null)
```

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

## #3 — ironhead, 2005-03-07T07:55Z

Tack! Det funkade bra med LIKE, Lars...men hur gör jag om jag skickar in ID:n som jag vill jämföra med....testade:

```
AND (tType.iTypeID =  @iTypeID or @iTypeID is null)
```

men då fick jag ingen träff...

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

## #4 — LarsG, 2005-03-07T09:11Z

Kan du utveckla det lite mer? Vad innehåller variabeln @iTypeID t.ex?

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

## #5 — ironhead, 2005-03-07T09:44Z

> **LarsG skrev:**
>
> Kan du utveckla det lite mer? Vad innehåller variabeln @iTypeID t.ex?

@iTypeID innehåller ett ID (siffra), matchas mot räknare + primärnyckel i tabell. Deklareras som Integer i SP:n.

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

## #6 — ironhead, 2005-03-07T12:42Z



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

## #7 — LarsG, 2005-03-08T09:29Z

Jag förstår inte vad problemet är. Exemplifiera med tabellinnehåll och vilket resultat du förväntar dig.

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

## #8 — ironhead, 2005-03-08T12:15Z

Jag försöker mig på att göra en sökmotor som skall söka på:
maträtt(fritext)
ingredienser(fritext)
ejinnehållaingredienser(fritext)
typ(idnr)
tillfälle(idnr)
måltid(idnr)
tema(fritext)

Jag har alltså 3 fritextrutor där man kan skriva ord och 3 dropdown som baseras på idnr (räknare + primärnyckel)
och dels "tema" som man kan skriva med i url:en för att begränsa antal måltider inom ett eller flera teman.

så min SP ser ut nåt som (pseudokod):

```
SELECT * FROM tabell LEFT OUTER JOIN....WHERE Publiceringdatum <= '20050308'
AND tema=@tema1 
OR tema=@tema2 
OR tema=@tema3
OR tema=@tema4
OR tema=@tema5

AND thismeal LIKE '%' + @thismeal + '%'
AND ingrediens LIKE '%' + @ingrediens + '%'
AND ingrediens NOT LIKE '%' + @NOTIngrediens + '%'
AND type=@type
AND meal=@meal
AND occasion=@occasion
```

På ASP-sidan ser jag till att de tema jag skickar in (mellan 1-5) alltid skickas in med början på @tema1 och stigande.

Problemet är att när man bara t.ex. vill söka på ingrediens, så blir det fel iom att de andra värdena är tomma, jag får ett felaktigt resultat.

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

## #9 — LarsG, 2005-03-08T17:41Z

Om du skickar in null för de variabler som inte har något värde så

```
SELECT * FROM tabell LEFT OUTER JOIN....WHERE Publiceringdatum <= '20050308'
AND ((tema = @tema1 or @tema1 is null)
or (tema = @tema2 or @tema2 is null) 
or (tema = @tema3 or @tema3 is null)
or (tema = @tema4 or @tema4 is null)
or (tema = @tema5 or @tema5 is null))
AND (thismeal LIKE '%' + @thismeal + '%' 
   or @thismeal is null)
AND (ingrediens LIKE '%' + @ingrediens + '%'
 or @ingrediens is null)
AND (ingrediens NOT LIKE '%' + @NOTIngrediens + '%'
or @@NOTIngrediens is null)
AND (type=@type or @type is null)
AND (meal=@meal or @meal is null)
AND (occasion=@occasion or @occasion is null)
```

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

## #10 — ironhead, 2005-03-09T08:09Z

Vad jag än skriver nu, så får jag noll träffar :-/

Kan man skriva ut frågan på nåt vis, så man ser vad som händer?

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

## #11 — ironhead, 2005-03-09T09:03Z

red.
Jag har märkt att det är dessa 4 rader som gör att sql-satsen inte fungerar:

```
AND (ingrediens NOT LIKE '%' + @NOTIngrediens + '%'
or @NOTIngrediens is null)
AND (type=@type or @type is null)
AND (meal=@meal or @meal is null)
AND (occasion=@occasion or @occasion is null)
```

Använder jag INTE dessa rader, så fungerar sökningen som den ska, vill dock ha med dessa också.

NOTingrediens = fritextfält (varchar)
type, meal, occasion = idnummer (int)

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

## #12 — ironhead, 2005-03-09T09:39Z

Aaah! Nu löste det sig....kunde inte skicka in '' in i AND (ingrediens NOT LIKE '%' + @NOTIngrediens + '%'
or @NOTIngrediens is null)
 utan var tvungen att  skicka in '''', och med type, meal, occasion var jag tvungen att skicka in null istället, då funkar det :)

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

## #13 — ironhead, 2005-03-09T09:45Z

red. Felskrivning...funkar bra nu....tack LarsG! :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/123658-parameter-ellr-ej-i-sp
