---
title: "Slå ihop 3 kolumner så man får dem sökbara"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/53610-slå-ihop-3-kolumner-så-man-får-dem-sökbara"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "erka"
published: "2002-09-18T11:01:13.000Z"
updated: "2002-09-19T07:26:32.000Z"
replies: 4
views: 290
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/53610-slå-ihop-3-kolumner-så-man-får-dem-sökbara"
---

# Slå ihop 3 kolumner så man får dem sökbara

## #1 — erka, 2002-09-18T11:01Z

Hej!

Vet att jag har löst detta innan, men kan inte hitta hur man gjorde. 

Jag söker på 5 kolumner i en databas, från 3 olika tabeller. I en tabell finns förnamn, efternamn och mellannamn. Jag vill kunna söka på Johan Andersson men det får jag ju inte några träffar på om jag skriver på följande sätt

```
strSQL = "SELECT dbo.Distributors.Name, dbo.CountryName.CountryName_GB, dbo.DistributorContacts.ForeName, dbo.DistributorContacts.MiddleName, dbo.DistributorContacts.LastName, dbo.DistributorContacts.Title  "_
&"FROM dbo.DistributorContacts INNER JOIN dbo.Distributors ON dbo.DistributorContacts.DistId = dbo.Distributors.DistId INNER JOIN dbo.CountryName ON dbo.Distributors.Countryname_ID = dbo.CountryName.CountryName_ID "_
&"WHERE Name LIKE '%" & strSearch & "%' OR CountryName_GB LIKE '%" & strSearch & "%' OR ForeName LIKE '%" & strSearch & "%' OR MiddleName LIKE '%" & strSearch & "%' OR LastName LIKE '%" & strSearch & "%' "_
```

Eftersom om man söker på namn så söker man på 3 kolumner; för, mellan och efternamn så får man ingen träff om man inte söker på enbart johan eller andersson

Jag vill alltså slå ihop för, mellan och efternamn till en kolumn i frågan och köra en LIKE på den.

Om jag slår ihop dem på följande sätt får jag ju dem i en "fake" kolumn men den kan jag sen inte köra en like på.

```
dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName AS ContactName
```

Någon som kan friska upp mitt minne om hur man gjorde.

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

## #2 — LarsG, 2002-09-18T12:44Z

```
where dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName = 'Johan Andersson'
```

eller

```
select * from (select dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName AS ContactName from t) s
where s.contactName = 'Johan Andersson'
```

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

## #3 — erka, 2002-09-18T13:42Z

tack larsg, men det blir inte som jag tänkt mig ritkigt..

Jag har följande sql fråga.

```
SELECT     dbo.Distributors.Name, dbo.CountryName.CountryName_GB, dbo.DistributorContacts.ForeName, dbo.DistributorContacts.LastName, dbo.DistributorContacts.Title
FROM         dbo.DistributorContacts INNER JOIN
                      dbo.Distributors ON dbo.DistributorContacts.DistId = dbo.Distributors.DistId INNER JOIN
                      dbo.CountryName ON dbo.Distributors.Countryname_ID = dbo.CountryName.CountryName_ID
```

Jag har variabeln strSearch 

Skriver jag "johan" vill ja ju få fram alla för, efternamn, företagsnamn som innehåller ordet johan. Skriver jag "johan and" vill jag få fram alla "johan andersson" samt "johan anderson" samt kanske om det finns ett företagsnamn som heter "Johan And Anders company".

Som det är nu får jag ju bara rätt om jag enbart skriver "johan" eller "andersson"

Tack för hjälpen
mvh
Erik

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

## #4 — LarsG, 2002-09-18T16:58Z

```
strSearch = replace(strSearch," ","%")
q = "select * from (select dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName AS ContactName from t) s
where s.contactName like '%" & strSearch & "%'"
```

kanske?

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

## #5 — erka, 2002-09-19T07:26Z

Löste det genom att göra följande sp

```
CREATE PROCEDURE [spSearchContact]
@strSearch Varchar(200)

AS

SELECT     dbo.Distributors.Name, dbo.CountryName.CountryName_GB, dbo.DistributorContacts.ForeName, dbo.DistributorContacts.LastName, 
		dbo.DistributorContacts.Title, dbo.DistributorContacts.ContactId, dbo.DistributorContacts.DistId
FROM         dbo.DistributorContacts INNER JOIN
                      dbo.Distributors ON dbo.DistributorContacts.DistId = dbo.Distributors.DistId INNER JOIN
                      dbo.CountryName ON dbo.Distributors.Countryname_ID = dbo.CountryName.CountryName_ID
WHERE (dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName LIKE '%' + @strSearch + '%' ) OR (dbo.CountryName.CountryName_GB LIKE '%' + @strSearch + '%' ) 
	OR (dbo.Distributors.Name LIKE '%' + @strSearch + '%' ) 

ORDER BY dbo.DistributorContacts.ForeName, dbo.DistributorContacts.LastName, dbo.CountryName.CountryName_GB
GO
```

Sen när jag skickar söksträngen till spn tar jag bort mellanslag och ersätter det med % tecken och det funkar perfa

tack larsg för all hjälp, du är en klippa

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/53610-slå-ihop-3-kolumner-så-man-får-dem-sökbara
