Versio

SQL NOT LIKE error

Overzicht Reageren

Danny Appeldoorn

Danny Appeldoorn

23/07/2009 15:35:00
Quote Anchor link
Wanneer ik probeer te sorteren op:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
name NOT LIKE 'A%' AND
 name NOT LIKE 'B%' AND
 name NOT LIKE 'C%' AND
 name NOT LIKE 'D%' AND
 name NOT LIKE 'E%' AND
 name NOT LIKE 'F%' AND
 name NOT LIKE 'G%' AND
 name NOT LIKE 'H%' AND
 name NOT LIKE 'I%' AND
 name NOT LIKE 'J%' AND
 name NOT LIKE 'K%' AND
 name NOT LIKE 'L%' AND
 name NOT LIKE 'M%' AND
 name NOT LIKE 'N%' AND
 name NOT LIKE 'O%' AND
 name NOT LIKE 'P%' AND
 name NOT LIKE 'Q%' AND
 name NOT LIKE 'R%' AND
 name NOT LIKE 'S%' AND
 name NOT LIKE 'T%' AND
 name NOT LIKE 'U%' AND
 name NOT LIKE 'V%' AND
 name NOT LIKE 'W%' AND
 name NOT LIKE 'X%' AND
 name NOT LIKE 'Y%' AND
 name NOT LIKE 'Z%'


Krijg ik deze error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' name NOT LIKE 'A%' AND name NOT LIKE 'B%' AND name NOT LIKE 'C%' AND name N' at line 1

Ik wil dus dat alles wat begint met cijfers of andere tekens selecteren. Dus GEEN rows waarvan naam begint met de letters [A-Z].

Hoe doe ik dit? Heb al gegoogled, maar dan krijg ik alleen maar info over meerdere kolommen doorzoeken..
Ik wil het dus maar op 1 kolom doen.

Alvast erg bedankt!
 
PHP hulp

PHP hulp

25/05/2012 18:28:51
Gesponsorde koppelingen:
 
Mark PHP

Mark PHP

23/07/2009 15:38:00
Quote Anchor link
Zoek eens naar LEFT()
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE LEFT(name, 1) NOT IN(A ... Z)
Nadeel is dat de indices van de tabel nu niet gebruikt worden.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
 
Erik Rijk
Moderator

Erik Rijk

23/07/2009 15:54:00
Quote Anchor link
Wat je doet zou gewoon moeten werken lijkt mij.. Post je gehele query eens?
 
Danny Appeldoorn

Danny Appeldoorn

23/07/2009 16:13:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
 mysql_query("SELECT * FROM ege_items WHERE name != '',
 name NOT LIKE 'A%' AND
 name NOT LIKE 'B%' AND
 name NOT LIKE 'C%' AND
 name NOT LIKE 'D%' AND
 name NOT LIKE 'E%' AND
 name NOT LIKE 'F%' AND
 name NOT LIKE 'G%' AND
 name NOT LIKE 'H%' AND
 name NOT LIKE 'I%' AND
 name NOT LIKE 'J%' AND
 name NOT LIKE 'K%' AND
 name NOT LIKE 'L%' AND
 name NOT LIKE 'M%' AND
 name NOT LIKE 'N%' AND
 name NOT LIKE 'O%' AND
 name NOT LIKE 'P%' AND
 name NOT LIKE 'Q%' AND
 name NOT LIKE 'R%' AND
 name NOT LIKE 'S%' AND
 name NOT LIKE 'T%' AND
 name NOT LIKE 'U%' AND
 name NOT LIKE 'V%' AND
 name NOT LIKE 'W%' AND
 name NOT LIKE 'X%' AND
 name NOT LIKE 'Y%' AND
 name NOT LIKE 'Z%' ORDER BY name ASC LIMIT 100 OFFSET "
. mysql_real_escape_string($offset)) or die(mysql_error());
?>


Heb ipv AND ook al ,'s gebruikt werkte ook niet.
 
Danny Appeldoorn

Danny Appeldoorn

23/07/2009 16:26:00
Quote Anchor link
Agirre, het wil daar niet mee. Krijg volgende error:
Unknown column 'A' in 'where clause'

Heb nu:
SELECT * FROM ege_items WHERE LEFT(name,1) NOT IN (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) ORDER BY name ASC LIMIT 100 OFFSET

(CENCORED WORD): Heb gebumpt, sorry bedoelde edit (ja, komt vaker bij mij voor.. (irri))
Gewijzigd op 01/01/1970 01:00:00 door Danny Appeldoorn
 
Erik Rijk
Moderator

Erik Rijk

23/07/2009 16:38:00
Quote Anchor link
http://www.bernzilla.com/item.php?id=400

Kijk eens naar dit voorbeeld, zie je al wat je fout doet?
 
Mark PHP

Mark PHP

23/07/2009 16:40:00
Quote Anchor link
Danny schreef op 23.07.2009 16:26:
Unknown column 'A' in 'where clause'
Als je de foutmelding ook daadwerkelijk had bekeken had je geweten dat je alle letters tussen quotjes moet zetten, zoals normaal is bij strings.
Maar nogmaals, het is goed mogelijk dat LIKE sneller werkt (dankzij de indices), in dat geval moet je even kijken naar WHERE name != '', .
 
Danny Appeldoorn

Danny Appeldoorn

23/07/2009 16:42:00
Quote Anchor link
Ehm, nee. Maar ik heb nu alle letters gequote 'A','B' enz.. Maar dat trekt mn hele pagina overhoop EN hij selecteerd nog steeds alles. (Tabel is maar 1px hoog per item)

EDIT:

Tis alleen de eerste letter niet complete naam drm werkt name != '' niet
Maar je was net voordat ik mn berichtje poste
Gewijzigd op 01/01/1970 01:00:00 door Danny Appeldoorn
 
Erik Rijk
Moderator

Erik Rijk

23/07/2009 16:55:00
Quote Anchor link
SELECT name FROM ege_items WHERE SUBSTR(name,1,1) NOT IN (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) ORDER BY name ASC LIMIT 100 OFFSET

Zomaar een idee, kan je dit eens testen? Knutsel niet zo vaak met SUBSTR. dus of het: 1,1 / 0,0 / 0,1 moet zijn weet ik niet exact
Gewijzigd op 01/01/1970 01:00:00 door Erik Rijk
 
Danny Appeldoorn

Danny Appeldoorn

23/07/2009 17:45:00
Quote Anchor link
Even laten weten, Erik jouw versie werkte óók. En die van Agirre óók! Wat Agirre zei, ik was vergeten name != '' erbij te voegen. Wanneer ik dit deed, werkten ze allebei!

Nu alleen nog welke is beter voor de performance? (Denk die van Agirre, maar toch vraag ik het ff).
 
- SanThe -

- SanThe -

24/07/2009 07:53:00
Quote Anchor link
Op regel 2 aan het eind moet de komma een AND zijn.
 
Danny Appeldoorn

Danny Appeldoorn

24/07/2009 08:36:00
Quote Anchor link
Ja nu werkte het wel. Maar welke van de 3 nu (:o) is beter voor performance??
 
Erik Rijk
Moderator

Erik Rijk

24/07/2009 13:50:00
Quote Anchor link
Maakt nu weinig uit denk ik,
"LIKE" is niet een van de snelste zowiezo. Als je echt met zware JOINS aan het werk was, dan zou je hier wel goed naar moeten kijken, in dit geval zal je het haast niet merken.
 



Overzicht Reageren

Get Adobe Flash player