Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Szukanie rekordu - wielkosc liter
Unises
post 6.02.2006, 11:59:46
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


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??
Go to the top of the page
+Quote Post
nospor
post 6.02.2006, 12:04:40
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Moze to ci pomoze:
http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Unises
post 7.02.2006, 11:07:37
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


jakos nie bardzo mi to pomogło ;-(
Go to the top of the page
+Quote Post
spenalzo
post 7.02.2006, 11:11:12
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


  1. SELECT cos
  2. FROM tabela
  3. WHERE pole LIKE BINARY '%wyrazenie%'


--------------------

Go to the top of the page
+Quote Post
Unises
post 8.02.2006, 10:27:04
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
spenalzo
post 8.02.2006, 10:41:19
Post #6





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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


--------------------

Go to the top of the page
+Quote Post
nospor
post 8.02.2006, 10:47:22
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Unises
post 8.02.2006, 14:49:54
Post #8





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


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ą...."

Ten post edytował Unises 9.02.2006, 07:14:59
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.05.2025 - 15:01