Avatar billede bent_m Nybegynder
09. april 2003 - 12:01 Der er 14 kommentarer og
3 løsninger

LIKE eller Equal TO eller?

Hej,

Hvis jeg bruger "WHERE BY LIKE '%by%'" findes alle poster, hvor blot én karakter indtastet i feltet "by" opræder i kolonnen "By".

Hvis jeg i min søgeformular f.eks. blot indtaster "s" i feltet "by" findes alle de bynavne der indeholder karakteren "s".

Hvad nu hvis jeg vil have at der kun skal findes de poster der indeholder nøjagtigt det der indtastes i søgeformularens "by" felt.

eks. Hvis man vil finde "Odense" skal man indtaste "Odense" i søgefeltet og altså ikke blot én af karakterne det findes i ordet "Odense".

Help please...
Avatar billede bearhugx Nybegynder
09. april 2003 - 12:03 #1
WHERE BY = 'Odense';
Avatar billede clausjul Nybegynder
09. april 2003 - 12:04 #2
SELECT result FROM table where BY='Odense'
Avatar billede disky Nybegynder
09. april 2003 - 12:05 #3
bent_m:
WHERE BY LIKE '%by%

Finde poster hvor 'by' forekommer i, ikke dem hvor der kun er 'b' eller 'y' men KUN dem hvor 'by' er i.

DU skal bruge

select * from tabel where by='Odense'
Avatar billede clausjul Nybegynder
09. april 2003 - 12:16 #4
Lad være med at bruge feltet BY fordi BY er faktisk et reserveret ord i SQL-sproget. Brug f.eks. City.
Avatar billede bent_m Nybegynder
09. april 2003 - 13:41 #5
Tak for svarene, men I misforstår mig vist alle!

Det skal være sådan:

Hvis der indtastes "odense" i formularfeltet "byen" findes alle poster hvor den nøjagtige term "odense" eksiterer og KUN den, hvis der indtastes "kolding" i formularfeltet "byen" findes alle poster hvor den nøjagtige term "kolding" eksiterer og KUN den osv.

Det skal ikke væres sådan at posterne findes hvis der f.eks. kun indtastes "o" eller "k" i formularfeltet.

Som jeg har det nu med "Byen LIKE '%byen%'" findes f.eks. "odense" også der blot indtastes "o" eller "d" i formularsøgefeltet. Posten findes altså, hvis der blot indtastes ét tegn der eksisterer i ordet "odense".

KORT SAGT: poster skal KUN hentes, hvis det indtastede i søgeformularfeltet "byen" er NØJAGTIG identisk med kolonnefeltet "Byen" i databasen.

????
Avatar billede clausjul Nybegynder
09. april 2003 - 13:43 #6
Jamen, vores forslag er også den løsning du er ude efter!
Avatar billede maniacdog Nybegynder
09. april 2003 - 13:45 #7
Enig med clausjul, men husk også som han siger at BY er et reserveret ord.
Avatar billede bent_m Nybegynder
09. april 2003 - 14:08 #8
Fatter det ikke:

jeg har p.t lavet det sådan:

$result = mysql_query("select * from sfmedlemmer WHERE Byen LIKE '%byen%'");

På denne måde findes alle poster hvor "odense" forekommer i databasekolonnen "Byen". Men de findes både hvis jeg indtaster "o" og hvis jeg indtaster "odense" i formularfeltet "byen".

Hvis jeg derimod udskifter "LIKE" med "=" findes der ingenting, ligegyldigt, hvad jeg indtaster...
Avatar billede clausjul Nybegynder
09. april 2003 - 14:10 #9
prøv med Byen LIKE 'byen'
Avatar billede bent_m Nybegynder
09. april 2003 - 14:24 #10
Dutter ikke - der findes INGENTING!
Avatar billede disky Nybegynder
09. april 2003 - 14:27 #11
Hvis du skriver where by like '%odense%' skal ordet odense forekomme.

skriv du where by like '%o%' skal bare 'o' være i texten, skrive du

where by like 'o' er det KUN hvis by KUN indeholder et 'o' og intet andet.

følgende skulle virke:

select * from tabel where bynavn like 'Odense'

Så finder den de poster hvor bynavn KUN er Odense og intet andet.
Avatar billede bent_m Nybegynder
09. april 2003 - 14:48 #12
JEg er helt med på disse ting, men du skal se det i forhold til en søgeformular, hvor brugeren kan indtaste et hvilket som helst bynavn.

Indtaster han "odense" findes de poster, hvor databasefeltet "Byen" er 100% identisk med termen "Odense". Indtaster han "Esbjerg" findes de poster er 100% identisk med termen "Esbjerg" osv. osv.

Men indtaster han blot "O" eller "E" skal posterne IKKE findes!!!
Avatar billede clausjul Nybegynder
09. april 2003 - 14:54 #13
Samme forslag fra os gælder stadigvæk. Prøv lige at skrive:

SELECT Byen FROM sfmedlemmer;

Kommer alle byerne frem? Og står Odense i en af rækkerne?

Ja -> Fint, så skal du bruge SELECT * from sfmedlemmer WHERE Byen='Odense'

Hvis det ikke virker, så skriv lige i din PHP:

<? print "SELECT * FROM sfmedlemmer WHERE Byen='$byen'" ?>

Det kan jo være at $byen er tomt af en eller anden grund. Husk at form-felterne er case-sensetive ... tjek din kode.
Avatar billede _darkstar_ Nybegynder
09. april 2003 - 15:02 #14
Noget tyder på at der er problemer med store og små bogstaver. Prøv

SELECT * FROM mintabel WHERE UPPER(felt) = UPPER('mitsoegeord')
Avatar billede bent_m Nybegynder
09. april 2003 - 15:14 #15
Har selv fundet løsningen.

Der skal blot skrives:

WHERE Byen LIKE '%byen'

i stedet for:

WHERE Byen LIKE '%byen%'

Ét "%"-tegn giver "er lig med", to "%"-tegn giver "indeholder".

JEg fordeler alligevel point'ne til jer alle

Ellers tak for hjælpen...
Avatar billede disky Nybegynder
09. april 2003 - 15:16 #16
bent_m

Din tolkning af %'s betydning er ikke helt korrekt

% er et wildcard, og betyder at det tegn, altså % kan skiftes ud med hvad som helst.

Så %odense, betyder at hvis odense står sidst findes denne post forudsat det ikke er efterfulgt af andet.
og %odense% betyder at ordet odense bare skal findes, om der kommer noget før eller efter er ligegyldigt.
Avatar billede _darkstar_ Nybegynder
09. april 2003 - 15:30 #17
Argh. Det forklarede du altså ikke særligt godt, bent_m.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester