---
title: "Sökning i en \"array\""
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/142218-sökning-i-en-array"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "inspiro"
published: "2006-02-09T14:05:58.000Z"
updated: "2006-02-10T07:53:21.000Z"
replies: 5
views: 569
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/142218-sökning-i-en-array"
---

# Sökning i en "array"

## #1 — inspiro, 2006-02-09T14:05Z

Jag har två tabeller som ska matchas ihop. I den ena tabellen finns en sträng som egentligen är en array:

1,2,44,68

I den andra finns ett värde som ska matchas mot arrayen bestående av en siffra, exempelvis siffran "6". Problemet är att om jag har siffran "6" så matchas den även mot "68" så som jag har gjort nu, jag vill att den bara ska matchas mot "6". 

Så här har jag försökt göra:

```
tabell1.abc like  '%' +  CAST(tabell2.abc as nvarchar(20)) + '%')
```

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

## #2 — Jesper T, 2006-02-09T15:47Z

Hmmm. Säkerligen fel databasstruktur.

Men annars så kan du använda en UD Funktion för det.

```
CREATE FUNCTION parseString 
(
 @sIds AS VARCHAR(8000) 
) 
RETURNS @Ret TABLE(IDs INT) 
AS
BEGIN 
DECLARE @FirstPos INT 
DECLARE @FirstPos1 INT 
DECLARE @SecondPos INT 
IF ( datalength( @sIds ) > 0 ) 
	BEGIN 
	SET @FirstPos = 1 
	SELECT @SecondPos = charindex(',', @sIds, @FirstPos) 
	WHILE ( @SecondPos > 0 ) 
	BEGIN 
	INSERT INTO @Ret VALUES( cast( substring( @sIds, @FirstPos, @SecondPos - @FirstPos ) AS INT) ) 
	SET @FirstPos = @SecondPos + 1 
	SET @SecondPos = charindex( ',', @sIds, @FirstPos ) END 
	INSERT INTO @Ret VALUES( cast( right( @sIds, datalength( @sIds ) - @FirstPos + 1 ) AS INT ) ) 
	END 
	RETURN 
END 

--Något liknande
SELECT tabell1.abc
FROM tabell1
INNER JOIN parseString(tabell2.abc) ids ON ids.IDs = tabell1.id
```

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

## #3 — LarsG, 2006-02-09T16:13Z

```
where ',' + <arrayKolumn> + ',' like '%,' + cast(<sifferKolumn> as varchar(10)) || ',%'
```

Som sagt, helt fel design. Borde egentligen inte svara innan du lovar att ändra ...

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

## #4 — inspiro, 2006-02-10T07:15Z

Hehe. :) Jo, det är väl inte så snyggt kanske... antar att ni vill att arrayen ska ligga i en egen tabell med ett id och varje siffra på egen rad?

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

## #5 — inspiro, 2006-02-10T07:25Z

Jag får felmeddelandet "Syntax near \|"

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

## #6 — inspiro, 2006-02-10T07:53Z

Bytte ut det mot ett + istället... och så gäller det då att strängen (arrayen) både börjar och slutar med ett komma. Jupp, ajg lovar att jag ska göra om det här men det får funka tills vidare. Tack! :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/142218-sökning-i-en-array
