ugrás a tartalomhoz

MySQL lekérdezési probléma

NZol · 2010. Nov. 22. (H), 23.59
Sziasztok!

Adott egy tábla latin1_swedish_ci karakterkódolással. Lekérdezésnél ékezet érzéketlen, én viszont szeretném, ha csak a pontos ékezethelyes találatokat adná vissza. Ezt hogyan lehet megoldani?

pl:
SELECT * FROM tabla WHERE nev='Bela'
(ez a lekérdezés ne listázza a Béla nevű sorokat)

Úgy sejtem(de lehet tévedek) collation -el kellene megoldani, de nem igazán sikerült.
Előre is köszi a segítséget.
 
1

BINARY

Poetro · 2010. Nov. 23. (K), 00.58
Ha a kis nagybetű is fontos, akkor lehet BINARY-t használni, és akkor csak a binárisan egyezőket fogja megtalálni, azaz a bela, bELA nem fog találatot okozni.
SELECT * FROM tabla WHERE BINARY nev='Bela';
Lehet ezt kombinálni a LOWER-rel és akkor nem lesz érzékeny a kis-nagybetűre:
SELECT * FROM tabla WHERE BINARY LOWER(nev) = 'bela';
Persze ennek a sebessége nem igazán optimális.
2

Köszi, ezt is próbáltam már,

NZol · 2010. Nov. 23. (K), 01.18
Köszi, ezt is próbáltam már, de sajnos valamiért ez sem akar működni...
(Nem ad találatot ékezethelyesen sem)
3

Működik

Poetro · 2010. Nov. 23. (K), 01.34
MariaDB [(none)]> SELECT BINARY 'Bela' = 'Bela';
+------------------------+
| BINARY 'Bela' = 'Bela' |
+------------------------+
|                      1 |
+------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> SELECT BINARY 'Bela' = 'bela';
+------------------------+
| BINARY 'Bela' = 'bela' |
+------------------------+
|                      0 |
+------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> SELECT BINARY 'Béla' = 'Béla';
+------------------------+
| BINARY 'Béla' = 'Béla' |
+------------------------+
|                      1 |
+------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> SELECT BINARY 'Béla' = 'Bela';
+------------------------+
| BINARY 'Béla' = 'Bela' |
+------------------------+
|                      0 |
+------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> SELECT BINARY 'Bela' = 'Béla';
+------------------------+
| BINARY 'Bela' = 'Béla' |
+------------------------+
|                      0 |
+------------------------+
1 row in set (0.00 sec)
4

Észrevétel

NZol · 2010. Nov. 23. (K), 01.36
Ha ékezetesen van letárolva (pl.: Béla), akkor nem találom meg így:
SELECT * FROM tabla WHERE BINARY nev='Béla'; 

viszont, ha ékezet nélkül van tárolva akkor működik a bináris összehasonlítás.