/ 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øge efter et helt ord i MySQL
Fra : J


Dato : 19-11-04 00:10

Jeg vil gerne søge på hele ord i min database. Jeg kan f.eks. have to rækker
i min database:

1, "Ord er iorden."
2, "Det er iorden."
3, "Det er jo bare ord."
4. Det er ord der gør det."

Jeg søger med "SELECT * FROM mytable WHERE mystring LIKE '%ord%'". Jeg havde
først tænk om man kunne søge på "LIKE '% ord %'" men det fanger jo ikke
start og slut (hvor slutordet også slutter med et punktum = "ord.")?

Jeg vil gerne have række 1, 3 og 4 frem. Dvs. hele ord der starter, -
hvordan kan jeg gøre det?



 
 
Stig H. Jacobsen (19-11-2004)
Kommentar
Fra : Stig H. Jacobsen


Dato : 19-11-04 02:48

On Fri, 19 Nov 2004 00:10:10 +0100, J wrote:

> Jeg søger med "SELECT * FROM mytable WHERE mystring LIKE '%ord%'". Jeg havde
> først tænk om man kunne søge på "LIKE '% ord %'" men det fanger jo ikke
> start og slut (hvor slutordet også slutter med et punktum = "ord.")?

Jeg tror, at det overstiger LIKE's evner

Se om ikke MySQL kan bruge regular expressions til den slags, de
kan det du vil.

--
Stig - remove 'nospam.' to send me mail
Synchronize your bookmarks: http://syncit.goth.dk/

Den (19-11-2004)
Kommentar
Fra : Den


Dato : 19-11-04 09:48

> Jeg tror, at det overstiger LIKE's evner
> Se om ikke MySQL kan bruge regular expressions til den slags, de
> kan det du vil.

Det kan den - "REGEXP", men jeg har stadigt ingen idé om hvordan sådan en
søgestreng så skal se ud (men det er måske den forkerte gruppe så)?



Jens Gyldenkærne Cla~ (19-11-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-11-04 10:05

Den skrev:

> Det kan den - "REGEXP", men jeg har stadigt ingen idé om hvordan sådan en
> søgestreng så skal se ud (men det er måske den forkerte gruppe så)?

I de regex-parsere jeg kender (inkluderer ikke MySQL) kan man skrive
\bord\b for at søge på "ord" som enkeltstående ord (fanger altså " ord",
"ord", "ord.", "ord!" etc.)

\b skal læses som "Word Boundary".

Uden regex kan man fange hele ord uden tegnsætningstegn med

   SELECT felt FROM tabel WHERE ' ' + felt + ' ' LIKE '% ord %'

- men der vil selvfølgelig stadig være en del som ikke kommer med.

--
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

Peter Brodersen (22-11-2004)
Kommentar
Fra : Peter Brodersen


Dato : 22-11-04 19:53

On Fri, 19 Nov 2004 00:10:10 +0100, "J" <a@a.a> wrote:

>Jeg søger med "SELECT * FROM mytable WHERE mystring LIKE '%ord%'". Jeg havde
>først tænk om man kunne søge på "LIKE '% ord %'" men det fanger jo ikke
>start og slut (hvor slutordet også slutter med et punktum = "ord.")?

Hvis du alligevel insisterer på at søge efter hele ord, så er
FULLTEXT-indeksering sandsynligvis din ven:

http://dev.mysql.com/doc/mysql/en/Fulltext_Search.html
==
MySQL uses a very simple parser to split text into words. A ``word''
is any sequence of true word characters (letters, digits, and
underscores), optionally separated by no more than one sequential `''
character. For example, wasn't is parsed as a single word, but wasn''t
is parsed as two words wasn and t. (And then t would be ignored as too
short according to the rules following.) Also, single quotes at the
ends of words are stripped; only embedded single quotes are retained.
==

--
- Peter Brodersen

J (24-11-2004)
Kommentar
Fra : J


Dato : 24-11-04 10:48

> Hvis du alligevel insisterer på at søge efter hele ord, så er
> FULLTEXT-indeksering sandsynligvis din ven:
>
> http://dev.mysql.com/doc/mysql/en/Fulltext_Search.html

Så vidt som jeg kan se på dokumentationen, så betragtes et ord som "stop
word", hvis der indgår i mere end 50% af søgningen. Det kan være smart nok i
mange tilfælde, men jeg vil gerne finde alle steder, hvor det héle ord
indgår i, så jeg tror desværre ikke, at jeg kan bruge MATCH.

Jeg ville faktisk helst have en regulær expression som kunne fange ordet, da
der også ligger noget i at vise hvilke ord der er fundet på web'en (men
dette er næppe det rette forum for reg.exp.).



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

Månedens bedste
Årets bedste
Sidste års bedste