Avatar billede clausga Nybegynder
14. maj 2006 - 21:23 Der er 9 kommentarer

kan ikke få NOT LIKE til at virke

mysql_query("SELECT * FROM kunde WHERE ordreid LIKE '%$seoid%' OR navn LIKE '%seoid%' AND status NOT LIKE 'temp'")

Men stadig kommer temp med HVORFOR ?
Avatar billede turbotux Nybegynder
14. maj 2006 - 21:38 #1
Du skal have din AND clause med på begge OR sætninger...
ala

SELECT * FROM kunde WHERE
ordreid LIKE '%$seoid%' AND status NOT LIKE 'temp'
OR navn LIKE '%seoid%' AND status NOT LIKE 'temp'
Avatar billede erikjacobsen Ekspert
14. maj 2006 - 21:38 #2
Måske mener du
mysql_query("SELECT * FROM kunde WHERE (ordreid LIKE '%$seoid%' OR navn LIKE '%seoid%') AND status NOT LIKE 'temp'")
Avatar billede clausga Nybegynder
14. maj 2006 - 21:43 #3
lige præsis erik.... smid svar :)
Avatar billede erikjacobsen Ekspert
14. maj 2006 - 21:49 #4
Samler ikke på point, tak.
Avatar billede nielle Nybegynder
14. maj 2006 - 22:51 #5
Man bør ikke bruge LIKE hvor det ikke er strengt nødvendigt.

Enten er det fordi at der kan stå noget foran eller efter "temp"

    ... status NOT LIKE '%temp%'

eller, også så er det:

    ... status <> 'temp'
Avatar billede fixxxer Nybegynder
15. maj 2006 - 20:58 #6
nielle >> af ren nysgerighed, hvor kan man læse lidt mere om sådan "bør"/"bør-ikke" mht. LIKE i mySQL?
Avatar billede nielle Nybegynder
15. maj 2006 - 21:45 #7
Kan varmt anbefales:

http://www.amazon.com/gp/product/0596001452/sr=8-1/qid=1147722040/ref=sr_1_1/002-6774627-6399246?%5Fencoding=UTF8

Bortset fra det, så er det vel nærmest logik for burhøns i dette tilfælde; Det tager nødvendigvis mere tid at undersøge om noget indeholder noget andet som en delstreng et eller andet sted, end at det tager at undersøge om det er identisk med den.

Om end jeg har en kraftig mistanke om at MySQL-motoren selv kan finde ud af at optimere

... status NOT LIKE '%temp%'

- om til:

... status <> 'temp'
Avatar billede erikjacobsen Ekspert
15. maj 2006 - 21:53 #8
Du mener vel, at MySQL-motoren selv kan finde ud af at optimere

... status NOT LIKE 'temp'

- om til:

... status <> 'temp'

Men nej, det går nok ikke. LIKE er i modsætning til = en bogstav-for-bogstav sammenligning der tager højde for collation. LIKE vil derfor formentlig i bedste fald give en "table scan" i de rækker, der er tilbage efter de øvrige betingelser i WHERE-delen
Avatar billede nielle Nybegynder
15. maj 2006 - 22:06 #9
Jep, lidt for meget cut'n'paste der.

Det lyder meget rimeligt det du i øvrigt siger - jeg skal på ingen måde give mig ud for at være database ekspert. :^)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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