ugrás a tartalomhoz

lekérdezés pontos egyezéssel (kis-nagybetűk tekintetében)

a.d.a.m · 2006. Május. 31. (Sze), 08.44
Sziasztok!

Egy nagy-nagy problémával állok szemben, szeretnék egy olyan adatbázislekérdezést véghezvinni, amely megvizsgálja, hogy az adott cellában lévő adat megegyezik-e a felhasználó által megadottal vagy sem.

Ez így egyszerűnek tűnik, de nekem mégsem sikerült tökéletesen a megvalósítás, mert az általam készített parancssor nem tesz külömbséget a kis- és nagybetűk között, pedig ez lenne a lényeg.

A kód a következő:
  1. SELECT * FROM tabla WHERE mezo1='".$_POST['mezo1']."' AND mezo2='".$_POST['mezo2']."'"  
(a kód php-ban kerülne felhasználásra, ezért a ".$_POST['mezo1']." érték.

Előre is köszönöm a segítségeteket.

a.d.a.m
 
1

2 ötlet

VBala · 2006. Május. 31. (Sze), 09.15
Először az jutott eszembe, hogy ellenőrizd utána a lekérdezett értéket php-ból is, de aztán megtaláltam ezt a mysql manualban:
The following two statements illustrate that string comparisons are not case sensitive unless one of the operands is a binary string:
  1. mysql> SELECT 'abc' LIKE 'ABC';  
  2.         -> 1  
  3. mysql> SELECT 'abc' LIKE BINARY 'ABC';  
  4.         -> 0  
3

kipróbáltam

a.d.a.m · 2006. Május. 31. (Sze), 09.25
és tökéletesen működik, köszönöm!
4

tökéletes? müködik.

Balogh Tibor · 2006. Május. 31. (Sze), 10.10
és tökéletesen működik, köszönöm!
Azért mégsem annyira tökéletes... A binary operátort alkalmazva nem használja az indexeket. Ezért érdemesebb ezt a tábla létrehozásakor megadni, vagy módosítani. Így már használni fogja az indexet is, és az eredeti lekérdezésed is "case sensitive" módon fog futni.
  1. CREATE TABLE tabla (  
  2.     mezo1 VARCHAR(20) BINARY NOT NULL,  
  3.     mezo2 VARCHAR(20) BINARY NOT NULL,  
  4.       
  5.     INDEX mezo1 (mezo1),  
  6.     INDEX mezo2 (mezo2)  
  7. );  
  8. vagy  
  9. ALTER TABLE  
  10.     tabla  
  11. CHANGE  
  12.     mezo1  
  13.     mezo1 VARCHAR(20) BINARY NOT NULL;  
  14.   
  15. SELECT  
  16.     *  
  17. FROM  
  18.     tabla  
  19. WHERE  
  20.     mezo1='".$_POST['mezo1']."' AND  
  21.     mezo2='".$_POST['mezo2']."'"  
2

google...

talger · 2006. Május. 31. (Sze), 09.19