bboymietek
27.05.2015, 10:26:52
Witam. Proszę o pomoc. Potrzebuje instrukcje select która wyciągnie mi z bazy pola których tytuły są z przedziału:
Tytuły na litery od a do g,
Tytuły na litery od g do p,
Tytuły na litery od p do ż
Proszę o podpowiedzi.
markuz
27.05.2015, 10:53:28
Spróbuj tak:
WHERE tytul REGEXP '^[a-g]'
itd.
bboymietek
31.05.2015, 00:03:17
Niestety nic to nie daje. Problem jest w tym że nie wykrywa to polskich znaków.
Jeżeli będę miał tytuł na literę ż, ź czy ł to nie zostanie on pobrany z bazy.
Proszę o następne popdpowiedzi
Turson
31.05.2015, 18:33:03
Cytat
Tytuły na litery od a do g,
WHERE tytul LIKE "a%" OR tytul LIKE "g%"
Pyton_000
31.05.2015, 18:49:42
@Turson idź się przespać

CO do polskich liter to dodaj sobie do tego regexp:
^[a-gąćę]
i powinno zadziałać.
bboymietek
9.06.2015, 17:12:36
niestety jeżeli używam tego selecta to np przy zapytaniu : ^[s-zśżź]
to wyskakują mi też tytuły które np litere "ś" mają w środku a nie na początku.
Co robić?
Pyton_000
9.06.2015, 18:20:34
pokaż zapytanie
bboymietek
11.06.2015, 22:22:25
$zapytanie= "SELECT * FROM filmy WHERE tytul REGEXP '^[$literaPierwsza-$literaDruga$polskie]' ";
Pyton_000
11.06.2015, 22:25:03
A przetworzone ?
bboymietek
12.06.2015, 13:01:59
$zapytanie= "SELECT * FROM filmy WHERE tytul REGEXP '^[p-zśżź]' ";
Pyton_000
13.06.2015, 10:06:18
W takim masz złe kodowanie tabeli/kolumny
Zobacz jakie masz kodowanie. Ja stworzyłem na utf8_polish_ci i działa tak jak powinno.
bboymietek
15.06.2015, 17:46:30
spróbuj dodac do bazy wpis na litery ś lub ł i jeżeli w tytule bedzie np łódź a zrobie selecta takiego:
SELECT * FROM filmy WHERE tytul REGEXP '^[p-zżź]'
to otrzymam w wynikach tytul łódź którego nie powinno być bo mialy być tytuły które na początku mają litere z przedziału p-z i kodowanie zmienilem na polish ale to nie pomaga.
proszę o następne podpowiedzi
Pyton_000
16.06.2015, 12:36:38
Daj zrzut z BD struktura i przykładowe dane
Crozin
16.06.2015, 12:44:12
1. Nie korzystaj z wyrażeń regularnych tutaj, chyba że chce Ci się wpisywać wszystkie litery z dziesiątek alfabetów świata.
2. Wszystko co musisz mieć to poprawnie ustawiony system porównywania znaków (np. na utf8_[unicode|general|polish]_ci) i proste zapytanie:
SELECT ... FROM tbl_name WHERE LEFT(title_col_name, 1) BETWEEN 'a' AND 'g'
PS. IIRC MySQL od lat jest skopany i ma problem z poprawną obsługą litery "Ł".
EDIT: http://stackoverflow.com/a/3506373/252591
Xelah
16.06.2015, 13:21:03
Cytat(Crozin @ 16.06.2015, 13:44:12 )

PS. IIRC MySQL od lat jest skopany i ma problem z poprawną obsługą litery "Ł".
To, o czym piszesz odnosi się tylko do utf8_general_ci. I nie jest to bug. To po prostu jest zgodne ze standardem (http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt). Żeby Ł===L można użyć na przykład "utf8_unicode_520_ci" (bodajże od 5.6).
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.