Hej! Du kan använda LIKE när du söker i en tabell. Sökning med LIKE funkar,att söka på fritext
Jag undrar om det går att söka på fritext i en databas. Vi hittar på ett fall: Vi säger att jag har en tabell som heter Personer med namn, adress, personnummer. Jag vill att det även ska finnas ett fält med sökord. Dessa ska användas så att om jag söker på ngt av orden ska personen hittas. Tex skulle "sökord" kunna innehålla orden tjej, sport, lång, åtskilllda med ett kommatecken.
Då undrar jag: Kan jag på ngt sätt skriva in ordet "sport" i en fråga och få upp en eller flera personer genom att sökningen görs i fältet sökord?
(Jag vill ju inte ha vartenda ord på en separat rad i tabellen.)
Hoppas att ni förstår vad jag menar och att ni kan hjälpa mig!
/Diana Sv: att söka på fritext
strSQL="SELECT Namn,ord FROM tabell WHERE ord LIKE '%" & DetSöktaOrdet & "%'"
Den här tittar på om ordet finns med.
DetSöktaOrdet% gör att det ska börja med det ordet.
%DetSöktaOrdet, gör att ordet skall sluta med det ordet.
//Anna-Karin
Sv: att söka på fritext
Men du kommer få bättre prestanda, samt bättre stuk på databasen,
om du har en separat tabell för sökord, som är relaterade till personen.
Så här:
<code>
TABELL_PERSON
personID
Namn
Adress
Tel
TABELL_SOKORD
personID
SokOrd
EXEMPELDATA i TABELL-SOKORD:
personID SokOrd
------------------------------
1 Cykel
1 Fotboll
1 Hjälm
2 Ishockey
2 Bandy
2 TV-spel
</code>
Nu kan databasen indexera kolumnen SokOrd mer effektivt än om
kolumnen innehöll en kommaseparerad sträng.
Det kommer gå snabbare och databasservern behöver inte jobba lika mycket.
Dessutom: man bryter mot 1NF om man lägger in kommaseparerade värden i en kolumn,
och det kan jag inte gärna rekommendera att man gör..
En annan uppenbar fördel: det blir enklare att programmera
ett vettigt gränssnitt för att administrera sökorden..
sql:n blir t.ex. en subquery:
<code>
SELECT P.personID, P.Namn, P.Adress
FROM TABELL_PERSON P
WHERE P.personID IN
(SELECT S.personID FROM TABELL_SOKORD S
WHERE S.Sokord IN ('sokord1','sokord2') )
-- ej testad SQL :)
</code>
Ola