Case-sensitive mysql keresés

Case-sensitive mysql keresés

Ha már régóta dolgozik a MySQL szoftverrel. aztán észrevette, hogy minden minta, vagy a keresés nem érzékeny a kis- és nagybetűkre. A legtöbb esetben ez kényelmes, de néha néha szükség van a kis- és nagybetűkre való keresésre a MySQL-ben. Ezt fogom írni ma.

Annak érdekében, hogy világossá tegyük, mi a tét, most mutassunk be egy példát egy SQL lekérdezésre:

SELECT * FROM `users` WHERE` login` = 'admin'

Ez a kérés visszaadja a felhasználót a "admin" bejelentkezéssel. Mindez azonban nem teljesen rossz. Ha a felhasználó "Admin" (vagy például "AdMiNM"), akkor ez lesz az eredmény.

A gyakorlatban egy ilyen hiba nem lesz. Ha mindent helyesen csináltál (legalább a UNIQUE-t tedd a megfelelő mezőre), akkor az "admin" és az "Admin" értékek soha nem lesznek együtt. Ezért ebben az esetben egy regiszter-független minta egyáltalán nem szükséges.

SELECT * FROM `users` WHERE` login` = 'admin' és 'password` =' mypassword '

Mivel az alapértelmezett esetben nem tekinthető tehát, hogy a felhasználó meg fogja találni, és a jelszót meg fogja találni, ami nem kell, mert ha register belépés nem fontos, itt jelszó regisztrálj feltétlenül figyelembe kell venni.

A probléma megoldható a BINARY használatával. Ha megadja ezt a kezelőt a lekérdezésben, az azt követõ sorok nagybetűsek lesznek. Ez a következő okból működik: a BINARY után következő sorok bináris kódokká alakulnak. És a kis- és nagybetűk kódja más. Ezért az összehasonlító művelet, ha a vonalak nem egyeznek a regiszterrel, hamis adatokat ad vissza. mert bináris kódjuk más. A mi példánkra vonatkozó példánkban ez a kérés helyes lesz:

SELECT * FROM `users` WHERE` login` = 'admin' ÉS BINARY` password` = 'mypassword'

Íme egy egyszerű módszer a kis- és nagybetűkre való kereséshez és a MySQL-beállításokhoz.

Kapcsolódó cikkek