webForumDet fria alternativet

strunta i punkter mm vid sökning..

ASP

10 svar · 251 visningar · startad av daniel_ra

Medlem sedan jan. 2002381 inlägg
Frågan#1

Värden från ett sökfält på min sida rensar jag från alla tecken
utom bokstäver och siffror. Då jag gör en sökning i DB vill jag
göra likadant där, jag vill jämföra mina rensade strängar med
"rensade" strängar från min databas. Jag vill bara göra sökning på exakta strängar och vill jag alltså jämföra min rensade sträng från formulär med en rensad sträng från DB. Hur löser man detta.

Skriver jag in "Daniel R." i formuläret rensas detta till "Daniel R"

I databasen står det dock "Daniel R." så dessa strängar är ju inte lika. Kan jag i min sql-fråga på något vis rensa det inskrivna från alla tecken utom bokstäver och siffror så att jag får en träff??

Jag vill ju inte hämta allt från databasen och sedan rensa strängarna då jag kollar mitt recordset.

Medlem sedan dec. 200012 464 inlägg
#2

Ett alternativ är då att skapa en extra (indexerad) kolumn där du lagrar det rensade värdet.

Medlem sedan jan. 2002381 inlägg
#3

Det måste ju finnas något enklare sätt, vad är vanligaste att göra vid sökningar på detta vis. Man kan ju inte alltid begära att man skall skriva in den exakta strängen i en sökruta. Då hittar man ju sällan någonting. Det går ju givetvis att bara hämta allt och sedan kontrollera recordsetet innan man skriver ut det man vill ha. Men det känns lite onödigt att hämta information där man vet att hälften inte kommer att användas..

Medlem sedan jan. 2003296 inlägg
#4

Förstår inte exakt vad du är ute efter. På det första inlägget låter det som du vill söka på exakta strängar, men på ditt andra inlägg låter det som att det inte behöver matcha exakt.

Det räcker inte med:
SELECT * FROM Tabell WHERE Falt LIKE '%Daniel R%'
?

Det är nog lite udda att söka efter "exakta" strängar där man rensar bort allt som inte är bokstäver annars ;)

Medlem sedan jan. 2002381 inlägg
#5

Okay skall göra mig tydligare: Antag att det i en post i databasen står följande: "Daniel R." observera att det är en punkt efter R.
Jag vill då att man skall kunna hitta detta genom att söka med endast "Daniel R" alltså utan punkt. Detta löses ju självklart genom att sätta ett litet %-tecken efter R i söksträngen såsom du nämner ovan. Problemet är att det i databasen även kan stå
"D. R.", "D. Ragnewall", "D, Ragnewall", "Daniel R," detta är bara några kombinationer som kan förekomma. Det är inte namn jag skall söka efter men du kanske förstår principen. Det som är inlagt är inlagt på olika vis. Det enklaste vore alltså att rensa söksträngen, alltså det användaren skriver in och sedan jämföra denna med en "rensad" sträng från databasen. Alltså både det i db och söksträngen saknar konstiga tecken såsom punkter, kommatecken osv. Står det alltså "Daniel R." (med punkt) i databasen så kommer en exakt sökning på "Daniel R" (utan punkt) att resultera i en träff. I databasen finns en del ord som är sammansatta med bindestreck osv. exempelvis x-ray. Söker jag då på xray kommer detta resultera i en träff med det jag vill göra. Jag skulle alltså inte behöva skriva x-ray med bindestreck. Jag kan inte på förhand veta hur en sträng är uppbyggd från databasen, därav vill jag ta bort alla tecken förutom bokstäver och siffror för att underlätta sökningen. Hoppas ni förstår bättre vad jag menar. =)

Medlem sedan maj 20031 173 inlägg
#6

man kanske kan göra en mängd replace som tar bort punkter och andra dumma tecken?

Medlem sedan jan. 2002381 inlägg
#7

Förstår inte riktigt hur du menar. Jag vill låta informationen i databasen se ut som den gör. det är endast vid sökning som jag vill strunta i tecknen.

Medlem sedan juni 200032 967 inlägg
#8

Jag brukar göra som LarsG föreslår.

Medlem sedan jan. 2002381 inlägg
#9

Hmm, används inte bara indexering för att undvika dubletter, eller har jag totalt mittförstått det hela. Förstår inte riktigt hur ni menar.. lite korkad kanske =)

Medlem sedan maj 2001156 inlägg
#10

Hej

Jag är också intresserad av hur man löser detta problem.
I mitt fall så är det sökningar på produktnamn som ställer till det.

Produkterna kan i databasen heta : Bestvax™ 2000

Jag vill då att man vid en sökning med Bestvax 2000 ska hitta produkten.

MvH

David

Medlem sedan sep. 2003448 inlägg
#11

Red // Skulle kanske ta och läsa tråden lite innan man postar :)

262 ms totalt · 4 externa anrop · v20260731065814-full.bd618308
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)