/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Søgning i en varchar felt
Fra : N9


Dato : 27-10-05 12:30

Hej

Hvis jeg nu har en felt med følgende indhold

Cocker, Joe

Hvis en bruger indtaster "Joe Cocker" i søg felt, da jeg følgende sql
sætning.

select * from cd where [navn] like '%Cocker%' or [navn] like '%Joe%'

så får jeg fint resultat frem, men det er jeg synes ikke at det er optimere
og desuden kommer der andre med navn joe også frem.

Jeg har forstillet mig at man kunne i SQL split "Cocker, Joe" og der efter
lave samligningen, ville det give bedre performence??? eller er det kun på
den må man kan gøre??

Hilsner

N9



 
 
Peter Lykkegaard (27-10-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 27-10-05 12:41


N9 wrote:
> Hej
>
> Hvis jeg nu har en felt med følgende indhold
>
> Cocker, Joe
>
To felter (fornavn, efternavn)?

> Hvis en bruger indtaster "Joe Cocker" i søg felt, da jeg følgende sql
> sætning.
>
> select * from cd where [navn] like '%Cocker%' or [navn] like '%Joe%'

select * from cd where [fornavn] like 'Joe%' and [efternavn] like
'%Cocker%'

For at optimere helt så skal du igang med fulltext søgning
http://www.databasejournal.com/features/mssql/article.php/3441981

http://www.google.com/search?q=fulltext+search+mssql

- Peter


///M (27-10-2005)
Kommentar
Fra : ///M


Dato : 27-10-05 13:48

Peter Lykkegaard wrote:
>> Hvis en bruger indtaster "Joe Cocker" i søg felt, da jeg følgende sql
>> sætning.

> select * from cd where [fornavn] like 'Joe%' and [efternavn] like
> '%Cocker%'

Ser fint ud, men den vil også finde en evt. Joey Cocker, og det synes jeg er
forkert da man har skrevet "Joe Cocker" og dermed nok ikke vil have andre
end "Joe Cocker%".

--
Mvh
///M



Jens Gyldenkærne Cla~ (27-10-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-10-05 13:30

N9 skrev:

> select * from cd where [navn] like '%Cocker%' or [navn] like
> '%Joe%'

SELECT * FROM cd WHERE navn LIKE 'Cocker%Joe%' OR navn LIKE
'Joe%Cocker%'

Man kan evt. også trunkere foran søgetermen ('%Cocker%Joe%'), men
søgningen vil nok være hurtigere i den førstnævnte udgave.

En mere korrekt udgave er nok at benytte fuldtekstindeksering, jf.
Peter Lykkegaards indlæg.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409083
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste