Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Brak rozróżnienia liter przy WHERE
Forum PHP.pl > Forum > Bazy danych > MySQL
.radex
Jak to zrobić? W tej chwili pracuję nad domenami typu xxx.domena.pl, gdzie xxx to nazwa użytkownika i to przekierowuje na profil użytkownika, a przeszukanie całej listy użytkowników i strtolower() to nie jest dobry pomysł, więc potrzebuję rozwiązania czysto sql-owego.

Pozdrawiam.
czachor
...WHERE LOWER()..
...ILIKE...

Chociaż mi się wydaje, że lepiej jest zrobić to w php, bo baza zrobi to wolniej.
.radex
ale ja nie chce zrobić strtolower() na tekst. Albo ty źle zrozumiałeś mnie, albo ja nie wiem jak użyć tych przykładów
czachor
Hm, no ale musisz wykonać przeszukiwanie case-insensitive, więc albo w php albo w bazie musisz użyć funkcji zmieniającej wielkość liter... W bazie danych robisz "WHERE LOWER(pole) = LOWER('użytkownik')", ale uważam, że lepiej użyć strtolower() - IMO szybciej, chociaż przyznaję, że nie testowałem.

A może faktycznie ja Cię nie rozumiem smile.gif
envp
Albo za pomocą LIKE... lub

Kod
mysql> select * from test_case where binary name  = 'Kamil';
nrm
ale masz rozróżnianie liter w userach i mozna mieć 2 takie same nicki rożniące się tylko wielkością? To raczej błąd.

U mnie user jest unikalny, obojętnie jaka wielkośc liter i tym samym mysql bezproblemowo sobie szuka usera zwykłym where, żadna różnica czy wpisze NICK czy nick.

(też nie wiem czy cie dobrze zrozumiałem bo u mnie takie rozwiązanie jak twoje działa bez żadnych problemów).
czachor
Cytat(envp @ 15.01.2008, 17:55:58 ) *
Albo za pomocą LIKE...

LIKE jednak nie jest dobrym pomysłem - do szukania konkretnego rekordu stworzono WHERE, które jest szybsze.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.