Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nieoczekiwane zachowanie DISTINCT
rafalp
post
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


Dane:

Katowice
Katowice123
Katowice123
Katowice123
Katowice-inne
Katowice-inne2

  1. SELECT DISTINCT `nazwa`
  2. FROM `miasta`
  3. WHERE `nazwa` LIKE 'kato%'
  4. ORDER BY `nazwa`
  5. LIMIT 50



W wynikach nie ma "Katowice" dlaczego?
Czy myślnik w nazwach robi jakąś różnice?
bez DISTINCT jest ok (tylko że z powtórzeniami)



--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wiiir
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


Jezeli dobrze przepisałeś składnie sql to moim zdaniem bedzie 0 wyników, masz Katowice.... a szukasz 'kato%'
Wielkość liter ma znaczenie, wiec distinct tu nie ma nic do rzeczy..

A jezeli szukasz po 'kato%' bez distincta to mnie to dziwi ze znajduje ci Katowice..
Go to the top of the page
+Quote Post
rafalp
post
Post #3





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


LIKE nie rozróżnia wielkości liter.


--------------------
Go to the top of the page
+Quote Post
wiiir
post
Post #4





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


hehe... bullshit, ale to zalezy jaka jest specyfikacja pola 'nazwa'

dokumentacja

wiec pokaz co masz w create table smile.gif
Go to the top of the page
+Quote Post
rafalp
post
Post #5





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


Mówię że LIKE nie rozróżnia wielkości liter, wszystkie pola są kodowane w utf8_general_ci


--------------------
Go to the top of the page
+Quote Post
wiiir
post
Post #6





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


sprobuj tego smile.gif

  1. SELECT * FROM (
  2. SELECT DISTINCT `nazwa`
  3. FROM `miasta`
  4. WHERE `nazwa` LIKE 'kato%'
  5. )
  6. ORDER BY `nazwa`
  7. LIMIT 50


kolejność wykonywania polecenia select. Jezeli jest tak jak w Oraclu to klauzula select wykona sie przed limitem (rownum Oracle), ale specem od Mysql-a nie jestem smile.gif

a samo stwierdzenie "LIKE nie rozróżnia wielkości liter." to nie prawda i kazdy ci to powie

Ten post edytował wiiir 3.02.2013, 23:07:24
Go to the top of the page
+Quote Post
rafalp
post
Post #7





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


Wiesz co, to samo jest :/

Ale chyba wiem o co chodzi ale nie wiem jak to pokonać,
Bo ja miałem w tabeli słowa z polskimi literami,

np.
Krakow
Kraków



no i DISTINCT usuwał mi pierwsze czyli Kraków, pomimo że te dwie nazwy to dla mnie różne nazwy (to tylko przykład).
Czy można wymusić na DISTINCT aby nie było mu wszystko jedno czy "ó" czy "o"


--------------------
Go to the top of the page
+Quote Post
wiiir
post
Post #8





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


no to moze kodowanie? Zobacz jak pojdzie utf8_polish_ci oraz set names utf8
Go to the top of the page
+Quote Post
rafalp
post
Post #9





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


Cytat(wiiir @ 4.02.2013, 00:26:03 ) *
no to moze kodowanie? Zobacz jak pojdzie utf8_polish_ci oraz set names utf8


Tak jest. Jednak utf8_polish_ci oprócz wiadomych zalet wpływa jeszcze na DISTINCT smile.gif


--------------------
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 Aktualny czas: 21.08.2025 - 05:33