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.
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..
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 ;)
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. =)
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.
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 =)