Pomoc - Szukaj - U¿ytkownicy - Kalendarz
Pe³na wersja: Szukanie rekordu - wielkosc liter
Forum PHP.pl > Forum > Bazy danych > MySQL
Unises
Witam!
Mam taki problem, Wyszukuje sobie w bazce nazwiska zapytankiem
$zapyt = "SELECT nazwisko, imie FROM telzks where nazwisko like \"%$x%\"";
gdzie $x jest wrowadzane przez formularz, Wszystko chodzi³o by swietnie gdyby wyszukiwa³o mi niezaleznie od wielkosci liter.
A teraz mam tak np: wprowadzam = lew
i zwraca mi Polewski, ale juz Lewandowski nie zostaje odnaleziony.
A ja chce by mi zwróci³o obydwa nazwiska!.

Podczas projektu bazki gdy nie mia³em jeszcze polskich liter i ustawionego kodowania, (by³o chyba latin1_swedish_ci)chodzi³o mi dobrze(litera duza i ma³a sa chyba oznaczone tym samym kodem), Ale gdy dam w bazie UTF-8, lub latin2 by miec polskie ogonki,Wielkosc liter jest brana pod uwage.

Jak zrobiæ by mieæ polskie litery i wyszukiwanie niezaleznie od wielkosci liter w w podanej frazie??
nospor
Moze to ci pomoze:
http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html
Unises
jakos nie bardzo mi to pomog³o ;-(
spenalzo
  1. SELECT cos
  2. FROM tabela
  3. WHERE pole LIKE BINARY '%wyrazenie%'
Unises
No i dalej nie dzia³a!
Nie nie widzi mi tego BINARY zapytanie zwraca stare wyniki


  1. LIKE BINARY '%Lew%
=Lewandowski
i
  1. LIKE BINARY '%lew%
=polewsk

ale obydwu na raz za nic w swiecie sad.gif



Prosze nie zabijajcie we mnie nadzieji,

ja naprawde nie chce robic wiochy typu....

LIKE X...OR...LIKE Y
i niezaleznie co user sobie tam wpisze w formie
zamienilbym x na ma³e litery, a nastepnie z x pierwsz± na duz± i wten sposob mialbym Y, wystawi³ to w zapytanko i jazda...

Mysla³em ze da sie potraktowac to zagadnienie w jakis elegancki sposób
spenalzo
Dziwne... w manualu stoi:

Cytat
The following two statements illustrate that string comparisons are not case sensitive unless one of the operands is a binary string:

mysql> SELECT 'abc' LIKE 'ABC';
        -> 1
mysql> SELECT 'abc' LIKE BINARY 'ABC';
        -> 0
nospor
Bo i wlasnie tak jest. Poto wlasnie podalem linka wczesniej, by to podkreslic. Ogolnie myslql nie zwraca uwage na wielkoscliter, ale mozna to ustawic. Mozna to ustawic na dane wyszukiwanie, mozna i na stale na tabelê. I mo¿e wlasnie tutaj masz ustawione na stale. Musisz to zmienic:
Cytat
col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin

If you want a column always to be treated in case-sensitive fashion, declare it with a case sensitive or binary collation. See Section 13.1.5, “CREATE TABLE Syntax”.
Czyli sprawd¼, czy nie masz tego ustawionego
Unises
Dziekuje koledzy za szybkie odpowiedzi, a przede wszyskim chêæ udzielenia pomocy.
Ale jakos dalej nie radze sobie z tym.(prosze o wyrozumialosc ale jestem PrzedPocz±tkuj±cy rolleyes.gif )

Cytat
I mo¿e wlasnie tutaj masz ustawione na stale. Musisz to zmienic:


Nie wiem gdzie mia³bym to zmienic ,nie mam zadnych wpisów z COLLATE w my.ini
Moze to wyda wam sie smieszne, ale probow³em tego uzyc w ten sposób:

  1. "SELECT nazwisko
  2. FROM tabelka
  3. where nazwisko LIKE '%lew%'COLLATE latin2_bin"


no i zwracalo mi tylko Polewskiego

Bez COLLATE rozroznia mi wielkosc liter z COLLATE tez

w my.ini
mam oczywiscie
Kod
[mysqld]
......
......
default-character-set=latin2

[client]
default-character-set=latin2


Baza , tabela i pola w tabeli tez s± w latin2_bin

Jestem pod³amany...przeciez nie moze byc to az tak trudne

______________________________________________________________

Ha juz mam! wystraczy³o ...utworzyc bazke i tabele za pomoc± komend zawartych w pliku (odpalonego pod shelem), a nie jak do tej pory to robi³em za po¶rednictwem PHPAdmin(w którym chyba mam z tym Collate cos domyslnie nasr@#$@e przy tworzeniu nowej bazki).
Bo gdy tworze bazke bez PHPAdmina jako domyslny format tabeli dostaje latin2_general_ci i wszystko jest OK,
Mam polskie ogony i wy³±czone te COLLATE a co za tym idzie podczas wyszukiwania nie jest brana pod uwage wielkosc liter.
Cel osi±gniêty!. Rkingsmiley.png

Rozumiem ¿e jak chce to miejscowo w³±czyc to odpalam zapytanie z zawartym collate okreslaj±cym konkretne pole.



Dziêki Wszystkim za pomoc.
"....jestem silny Wasz± si³± , jestem m±dry Wasz± m±dro¶ci±...."
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.