SQL NOT LIKE error
Wanneer ik probeer te sorteren op:
Krijg ik deze error:
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!
Code (php)
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
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%'
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)
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!
Gesponsorde koppelingen:
Zoek eens naar LEFT()Nadeel is dat de indices van de tabel nu niet gebruikt worden.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
Wat je doet zou gewoon moeten werken lijkt mij.. Post je gehele query eens?
Code (php)
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
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());
?>
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.
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))
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
Danny schreef op 23.07.2009 16:26:
Als je de foutmelding ook daadwerkelijk had bekeken had je geweten dat je alle letters tussen quotjes moet zetten, zoals normaal is bij strings.Unknown column 'A' in 'where clause'
Maar nogmaals, het is goed mogelijk dat LIKE sneller werkt (dankzij de indices), in dat geval moet je even kijken naar WHERE name != '', .
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
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
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
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
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).
Nu alleen nog welke is beter voor de performance? (Denk die van Agirre, maar toch vraag ik het ff).
Op regel 2 aan het eind moet de komma een AND zijn.
Ja nu werkte het wel. Maar welke van de 3 nu (:o) is beter voor performance??
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.
"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.



