webForumDet fria alternativet

regexp i sökning

7 svar · 309 visningar · startad av laidback

laidbackMedlem sedan maj 2001797 inlägg
#1

Sitter och pillar med en sökfunktion, ska söka mot en accessdatabas.

SQL-satsen ser ut ungefär så här

SQL = "SELECT * FROM bilder WHERE bildtext LIKE '%" & sokord & "%' "

Det fungerar fint, men som de flesta andra har jag ju upptäckt att en sökning på t ex 'bil' returnerar allt som innehåller ordet bil, billig, biltjuv, labil osv. Jättekul visserligen, men lite lätt opraktiskt i längden.

Har då lyckats läsa mig till att det går att förfina sökningen med hjälp av reguljära uttryck, hittade ett exempel på eforum som visserligen handlade om php och sql men jag tänkte att det kanske borde vara något liknande?
Det såg ut så här:

SELECT grejer FROM tabell WHERE LCASE(kolumnnamn) REGEXP "([[:space:]]|^)".quotemeta($ordet)."([[:space:]]|[[:punct:]]|$)"

Någon föreslog en kombination, dvs att först plocka ut potentiella träffar och sedan regexp'a dom för att slippa regaxp'a sådant som inte ens är en potentiell träff.

Fungerar regexp öht när man söker i access?

Och hur borde en sådan sql-sats se ut? Har lite erfarenhet av regexp men inte så värst mycket, så hjälp mottages tacksamt.

Jag har sökt och sökt men hittar inget vettigt, börjar bli lite lätt snurrig nu så ha överseende med ev misstag. :x

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Jag är också nyfiken men jag misstänker att det beror på vilken databas du använder.
MySql har ju en sådan funktion, hur det är med Access och MsSql vet jag inte.
Inlägget kanske kan flyttas?!

laidbackMedlem sedan maj 2001797 inlägg
#3

Som sagt, jag använder Access i just det här fallet, men är även (sekundärt) intresserad av hur man gör mot en msSQLdatabas.
Kanske hade det här passat bättre i ett databasforum eller i sql-forumet? Vänlig moderator får gärna flytta isf. :)

laidbackMedlem sedan maj 2001797 inlägg
#4

*puttar*

LarsGMedlem sedan dec. 200012 464 inlägg
#5

SQL har stöd för regexp men det är inte implementerat i Access eller SQLserver.

Nu kan du göra lite mer med like (i alla fall i SQL server)

where c like ' %searchterm[ .?!,]%'
 or c like  'searchterm[ .?!,]%'

Flyttas från ASP.

laidbackMedlem sedan maj 2001797 inlägg
#6

Okej, tack för hjälpen :) Eftersom det här projektet enbart har en accessdatabas att tillgå så får jag försöka klara mig utan regexpsökning för stunden då.

Vet du om det finns något annat sätt att söka efter exakta ord och inte bara delar av ord i Access?

Jesper TMedlem sedan nov. 20017 144 inlägg
#7

Vad betyder detta: [ .?!,]
?

laidbackMedlem sedan maj 2001797 inlägg
#8

Jag tror det är att den matchar även där sista tecknet är .?!, dvs även första och sista orden i meningar som annars inte tas med i matchningen.

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)