/ 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
REGEXP forespørgsel i MySql
Fra : Dennis Hansen


Dato : 19-01-02 00:04

Hej,

Jeg har et felt "keyword" (det er af typen TEXT)
i en Mysql database der indeholder nogle ord.
Feltet kunne feks. indeholde:
Skole arbejde sove

Jeg skal have lavet en query der kigger på hvert ord seperat og selecter
hvis den passer.
Jeg bruger PHP tiil at snakke med databasen.

Jeg har lavet en query som denne

$query = "SELECT id FROM tabellen WHERE keywords REGEXP '$search'";

Denne vil give et hit hvis $search er "arbejd",
det vil jeg ikke have, den skal kun ramme hvis man skriver hele ordet
"arbejde" eller "sove" osv.

Jeg er klar på at det kan udføres med en smart REGEXP sætning, jeg kan
bare ikke finde den,
jeg har kigget på http://www.mysql.com/doc/R/e/Regexp.html men jeg må
indrømme det er lidt sort.


Tak,

Mvh
Dennis




 
 
Niels Andersen (19-01-2002)
Kommentar
Fra : Niels Andersen


Dato : 19-01-02 08:47

"Dennis Hansen" <dennis__hansen@hotmail.com> wrote in message
news:3c48a9d2$0$232$edfadb0f@dspool01.news.tele.dk...
> $query = "SELECT id FROM tabellen WHERE keywords REGEXP '$search'";
>
> Denne vil give et hit hvis $search er "arbejd",
> det vil jeg ikke have, den skal kun ramme hvis man skriver hele ordet
> "arbejde" eller "sove" osv.

Jeg kan ikke lige se, hvorfor du overhovedet bruger regexp?

$query = "SELECT id FROM tabellen WHERE keywords='$search'";

--
Mvh.

Niels Andersen



Dennis Hansen (19-01-2002)
Kommentar
Fra : Dennis Hansen


Dato : 19-01-02 09:35


"Niels Andersen" <niels-usenet@myplace.dk> wrote in message
news:Ww928.1535$Eu2.218745@news010.worldonline.dk...

> Jeg kan ikke lige se, hvorfor du overhovedet bruger regexp?
>
> $query = "SELECT id FROM tabellen WHERE keywords='$search'";
>

Hvis der i feltet står "Skole arbejde sove" og du sætter search til
"arbejde", det vil ikke give noget hit.

Mvh
Dennis





Mads Lie Jensen (19-01-2002)
Kommentar
Fra : Mads Lie Jensen


Dato : 19-01-02 09:30

On Sat, 19 Jan 2002 00:04:04 +0100, "Dennis Hansen"
<dennis__hansen@hotmail.com> wrote:

>Jeg har lavet en query som denne
>
>$query = "SELECT id FROM tabellen WHERE keywords REGEXP '$search'";
>
>Denne vil give et hit hvis $search er "arbejd",
>det vil jeg ikke have, den skal kun ramme hvis man skriver hele ordet
>"arbejde" eller "sove" osv.

en REGEXP noget ala

(^|[[:space:]])søgeord($|[[:space:]])

kan gøre det - den sørger for at et ord enten starter først i feltet
eller har et mellemrum foran, samt at det enten slutter sidst på
linien eller med et mellemrum.


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk

Directory Opus - nu også til windows - http://www.gpsoft.com.au

Dennis Hansen (19-01-2002)
Kommentar
Fra : Dennis Hansen


Dato : 19-01-02 10:48

"Mads Lie Jensen" <mads@gartneriet.dk> wrote in message
news:bgai4u4t5mt3vfn27fnm8f0mt9gth0omjq@4ax.com...
> On Sat, 19 Jan 2002 00:04:04 +0100, "Dennis Hansen"
> <dennis__hansen@hotmail.com> wrote:

> en REGEXP noget ala
>
> (^|[[:space:]])søgeord($|[[:space:]])
>
> kan gøre det - den sørger for at et ord enten starter først i feltet
> eller har et mellemrum foran, samt at det enten slutter sidst på
> linien eller med et mellemrum.

Tak for det, det lyder lige som det jeg har brug for, men jeg kan slet
ikke få den til at give nogle hits.

Jeg skriver den ind (i phpmyadmin) som
SELECT id FROM tabellen WHERE "keywords REGEXP
(^|[[:space:]])arbejde($|[[:space:]])"
Hvad gør jeg galt ?


Mvh
Dennis




Mads Lie Jensen (19-01-2002)
Kommentar
Fra : Mads Lie Jensen


Dato : 19-01-02 11:46

On Sat, 19 Jan 2002 10:47:37 +0100, "Dennis Hansen"
<dennis__hansen@hotmail.com> wrote:

>> en REGEXP noget ala
>>
>> (^|[[:space:]])søgeord($|[[:space:]])
>>
>> kan gøre det - den sørger for at et ord enten starter først i feltet
>> eller har et mellemrum foran, samt at det enten slutter sidst på
>> linien eller med et mellemrum.
>
>Tak for det, det lyder lige som det jeg har brug for, men jeg kan slet
>ikke få den til at give nogle hits.

Den virker - jeg _har_ prøvet den

>Jeg skriver den ind (i phpmyadmin) som
>SELECT id FROM tabellen WHERE "keywords REGEXP
>(^|[[:space:]])arbejde($|[[:space:]])"
>Hvad gør jeg galt ?

Du sætter dine " forkert...
Det skal være:

SELECT id FROM tabellen WHERE keywords REGEXP
"(^|[[:space:]])arbejde($|[[:space:]])"

Feltnavne og sql som f.eks REGEXP skal ikke i ".

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk

Directory Opus - nu også til windows - http://www.gpsoft.com.au

Dennis Hansen (19-01-2002)
Kommentar
Fra : Dennis Hansen


Dato : 19-01-02 12:14

"Mads Lie Jensen" <mads@gartneriet.dk> wrote in message
news:1fji4ucposjvdd480dr09jhpvg3ff8vuqj@4ax.com...
> On Sat, 19 Jan 2002 10:47:37 +0100, "Dennis Hansen"
> <dennis__hansen@hotmail.com> wrote:

> Du sætter dine " forkert...
> Det skal være:
>
> SELECT id FROM tabellen WHERE keywords REGEXP
> "(^|[[:space:]])arbejde($|[[:space:]])"
>
> Feltnavne og sql som f.eks REGEXP skal ikke i ".
>

Juhuu mange tak !

Mvh
Dennis



Jesper Krogh (19-01-2002)
Kommentar
Fra : Jesper Krogh


Dato : 19-01-02 11:30

In article <3c48a9d2$0$232$edfadb0f@dspool01.news.tele.dk>, Dennis Hansen wrote:
> Hej,
>
> Jeg har et felt "keyword" (det er af typen TEXT)
> i en Mysql database der indeholder nogle ord.
> Feltet kunne feks. indeholde:
> Skole arbejde sove
>
> Jeg skal have lavet en query der kigger på hvert ord seperat og selecter
> hvis den passer.
> Jeg bruger PHP tiil at snakke med databasen.
>
> Jeg har lavet en query som denne
> $query = "SELECT id FROM tabellen WHERE keywords REGEXP '$search'";

Prøv med
$query = "SELECT id FROM tabellen WHERE kewords RLIKE '$search';

Det skulle gøre det.

--
../Jesper Krogh, jesper@linuxpusher.dk
webshop: http://www.linuxpusher.dk


Dennis Hansen (19-01-2002)
Kommentar
Fra : Dennis Hansen


Dato : 19-01-02 12:16


"Jesper Krogh" <jesper@linuxpusher.dk> wrote in message
news:slrna4iilv.qsf.jesper@luke.kollegiet...
> Prøv med
> $query = "SELECT id FROM tabellen WHERE kewords RLIKE '$search';
>
> Det skulle gøre det.

Nej ikke helt, den giver hit på "arbejd"

Mvh
Dennis



Jesper Krogh (19-01-2002)
Kommentar
Fra : Jesper Krogh


Dato : 19-01-02 12:34

In article <3c4955fadb0f@dspool01.news.tele.dk>, Dennis Hansen wrote:
>
> "Jesper Krogh" <jesper@linuxpusher.dk> wrote in message
> news:slrna4iilv.qsf.jesper@luke.kollegiet...
> > Prøv med
> > $query = "SELECT id FROM tabellen WHERE kewords RLIKE '$search';
> >
> > Det skulle gøre det.
>
> Nej ikke helt, den giver hit på "arbejd"

Undskyld, jeg må vist til at læse indlæggene noget bedre.

--
../Jesper Krogh, jesper@linuxpusher.dk
webshop: http://www.linuxpusher.dk


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

Månedens bedste
Årets bedste
Sidste års bedste