---
title: "Sökning som ignorerar mellanslag"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/152427-sökning-som-ignorerar-mellanslag"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "jockooono"
published: "2006-10-12T14:04:27.000Z"
updated: "2006-10-13T08:17:30.000Z"
replies: 14
views: 832
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/asp/152427-sökning-som-ignorerar-mellanslag"
---

# Sökning som ignorerar mellanslag

## #1 — jockooono, 2006-10-12T14:04Z

Jag har en asp-sida där man ska kunna söka efter kunder genom att knappa in telefonnummer. Problemet är att en del telefonnummer innehåller mellanslag och andra inte. Hur gör jag om man knappar in t.ex. "08 - 88 88 88" så ska den hitta "08-888888", "08-88 88 88" och "08-888 888" och även då åt andra hållet "08-888888" så ska den hitta "08 - 88 88 88" m.m. alltså få den att ignorera mellanslag.

```
SELECT * FROM KUNDER WHERE Telefon = '" & telefon & "' ORDER BY Fornamn, Efternamn
```

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

## #2 — Engine^, 2006-10-12T14:14Z

Du får göra en replace innan du testar datat.

Följdfrågan är alltså vilket DBMS använder du?

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

## #3 — jockooono, 2006-10-12T14:35Z

Använder mig av en Access-databas.

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

## #4 — Peter S, 2006-10-12T14:50Z

```
SELECT * FROM KUNDER WHERE replace(Telefon, " ", "") = '" & replace(telefon, " ", "") & "' ORDER BY Fornamn, Efternamn
```

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

## #5 — jockooono, 2006-10-12T15:09Z

Visste inte att det fanns en replace funktion i SQL. Får det dock inte att fungera från min asp-sida får bara "Slut på programsats förväntas." Det är 

```
replace(Telefon, " ", "")
```

 som den inte gillar har försökt med

```
replace(Telefon, ' ', '')
```

 då får jag "Odefinierad funktion 'replace' i uttryck."

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

## #6 — Peter S, 2006-10-12T15:18Z

Vilken version av Access gäller det?

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

## #7 — jockooono, 2006-10-12T15:27Z

Access 2003, det skumma är att om jag kör frågan direkt i access så fungerar den.

```
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Connstr
Set RS = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * FROM KUNDER WHERE replace(Telefon, " ", "") = '" & replace(telefon, " ", "") & "' ORDER BY Fornamn, Efternamn"
RS.Open SQL, Conn, 0, 1
```

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

## #8 — Peter S, 2006-10-12T15:35Z

Citationstecknena i den första replace():en får bytas mot apostrofer. Sökning på Google ger bl.a. [detta](http://www.ecs.psu.edu/training/Software_Tips/Access.htm) (#27), [alternativt](http://www.experts-exchange.com/Databases/Q_21960475.html) skapa en egendefinierad funktion som använder replace().

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

## #9 — jockooono, 2006-10-12T18:12Z

Menad du:

```
replace(Telefon, ' ', '')
```

i så fall funkar det inte.

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

## #10 — Peter S, 2006-10-12T18:15Z

Japp! Gav ovanstående länkar någonting?

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

## #11 — @nders, 2006-10-12T18:17Z

... och vad betyder "funkar inte"? På vilket sätt? Felmeddelande? Hur ser din kod ut nu?

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

## #12 — Peter S, 2006-10-12T18:19Z

Det bästa måste ändå vara att göra replace() innan datat läggs in i tabellen och sedan:

```
SELECT * FROM KUNDER WHERE Telefon = '" & replace(telefon, " ", "") & "' ORDER BY Fornamn, Efternamn
```

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

## #13 — jockooono, 2006-10-12T18:58Z

Får felmeddelandet:
"Odefinierad funktion 'replace' i uttryck."

Ha tyvärr ingen inloggning till experts-exchange så jag kunde inte se svaret. Funderad dock på att bli medlem...

Får väl ta och konvertera om alla telefonnummer i databasen och sen göra replace():en vid inmatningen. Tyvärr kan telefonnumrena se lite konstiga ut utan mellanslag. 08-88 88 88 ser mycket bättre ut än 08-888888 därför hade jag hoppats på att slippa ta bort mellanslagen.

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

## #14 — Peter S, 2006-10-12T20:13Z

Du behöver inte vara medlem. Längre ned kan läsas

> You cannot use the standard, built-in Replace function with ODBC.  You might be able to define a User_Function, that could then be seen by the ODBC connection:
> 
> Define the function in a standard Module, in your Access Database :
> 
> Public MyReplace(strSource as String, strReplaceWhat as String, strReplaceWith as String) as String
>     MyReplace = Replace(strSource, strReplaceWhat, strReplaceWith )
> End Function

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

## #15 — nakoz, 2006-10-13T08:17Z

Det gör inget om du tar bort mellanslagen, för du kan när du presenterar de göra en liten if-sats (obs, otestat):

```
tfn = "08-224466"

If Len(Right(tfn,Len(tfn)-InStr(tfn,"-"))) = 6 Then tfn = Left(tfn,InStr(tfn,"-")+2) & " " & Mid(tfn, Len(Left(tfn,InStr(tfn,"-")+3)),2) & " " & right(tfn,2)
If Len(Right(tfn,Len(tfn)-InStr(tfn,"-"))) = 7 Then tfn = Left(tfn,InStr(tfn,"-")+3) & " " & Mid(tfn, Len(Left(tfn,InStr(tfn,"-")+4)),2) & " " & right(tfn,2)
If Len(Right(tfn,Len(tfn)-InStr(tfn,"-"))) = 8 Then tfn = Left(tfn,InStr(tfn,"-")+3) & " " & Mid(tfn, Len(Left(tfn,InStr(tfn,"-")+4)),3) & " " & right(tfn,2)

Response.Write tfn
```

det är förmodligen inte det bästa å snyggaste sättet, med det borde formatera telefonnr snyggt, å då är ju problemet "löst"! =)

denna struntar alltså i hur många siffror som finns i riktnumret som visas innan "-" och formaterar sen ett telefonnummer som såhär:
6 siffror efter "-": RRR-NN NN NN
7 siffror efter "-": RRR-NNN NN NN
8 siffror efter "-": RRR-NNN NNN NN

Eller tja, bör göra iaf.. :)
Kanske att du får köra en cStr() på telefonnumret först, men borde nog inte vara så..

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/152427-sökning-som-ignorerar-mellanslag
