select * from tbl where falt like '%sökord%' order by charindex('sökord',falt)
red: sql server/sybase specifik
4 svar · 265 visningar · startad av mrblonde
hmmm... bygger en sökfunktion som gör en vanligt select * from tbl where fält LIKE '%sökord%'
Nu skulle jag vilja sortera det här recordsetet efter hur tidigt i träfftexten ordet förekommer.
Någon som har någon vettig funktion ihopknåpad för detta? Den kan returnera en array också, det funkar med.
Ex. om träff ett är "Hej och hå"
och träff två är "Hå och hej"
Så vill jag att om jag söker på "Hå" så skall de komma sorerade med träff två först och träff ett sen (och sen resten med i fallande ordning)
Hittade inget vettigt när jag sökte, men jag kanske sökte fel
select * from tbl where falt like '%sökord%' order by charindex('sökord',falt)
red: sql server/sybase specifik
Tack!
LarsG, du är suverän!
hmmm.... finns det något sätt även att ta order by hur ofta "sökord" förekommer i strängen?
Bara undrar, det gäller en sql server 7.
(har du något bra tips på en länk där alla sådana däringa metoder i sql finns uppradeade? charindex och sånt?)
http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28000409
Sen kan du gå vidare från denna. Det verkar bara finnas en fullständig beskrivning för SQL server 2000.
Om man vill ha antal förekomster så får man tricka till det lite
select * from t
where falt like '%sökord%'
order by (len(falt)-len(replace(falt,'sökord',''))/len('sökord') desc
red: desc kanske är mer relevant i detta sammanhang