Grzegorz F.

Grzegorz F. Software Engineer -
Technical Architect

Temat: problem z kodowaniem polskich liter

Hejka

mam problem z zapytaniem które powinno poprać użytkowników, których nazwiska zaczynają się od liter pomiędzy I-M ponieważ poniższe zapytanie pobiera też użytkowników zaczynających się na ŻŹŚ baza jest kodowana utf-8 używam Mysql. Może ktoś z was już się kiedyś z tym zetkną ?

SELECT * FROM users
WHERE
Surname REGEXP '^[IJKLMŁ]'
ORDER BY
Surname COLLATE utf8_polish_ci ASC,
Name COLLATE utf8_polish_ci ASC


wydaje mi się, że błąd tkwi w REGEXP może znacie jakieś leprze rozwiązania takiego zapytania (generalnie chodzi o dowolny przedział literowy)


pozdrawiam Grzegorz Frydrychowicz
Adam Ł.

Adam Ł. Project Manager w
Clearcode

Temat: problem z kodowaniem polskich liter

na początku połączenia z mysql użyj komend:

set character set 'utf8';
set names 'utf8';

a samo zapytanie to najprościej:

select *
from `users`
where `Surname` between 'I%' and 'M%'
order by `Surname`

pozdrawiam
Grzegorz F.

Grzegorz F. Software Engineer -
Technical Architect

Temat: problem z kodowaniem polskich liter

Dzięki za szybką odpowiedz

nie jest to dokładnie takie rozwiązanie, o które mi chodzi

WHERE `Surname` between 'I%' and 'M%'

nie wybiera litery "Ł" gdyż w utf-8 nie jest ona po literze "L"

zastosowałem taką konstrukcję:

WHERE
`Surname` LIKE 'I%' OR
`Surname` LIKE 'J%' OR
`Surname` LIKE 'K%' OR
`Surname` LIKE 'L%' OR
`Surname` LIKE 'Ł%' OR
`Surname` LIKE 'M%'

i działa ale może ktoś zna coś "ładniejszego" lub bardziej funkcjonalnego ???

pozdrawiam Grzegorz Frydrychowicz
Dariusz Sadowski

Dariusz Sadowski Loyalty Partner
Polska sp. z o.o.

Temat: problem z kodowaniem polskich liter

to co napisałes mozna krócej:

WHERE
`Surname` LIKE '[IJKLŁM]%'

ale szczerze mówiąc to nie wiem czy to ma jakikolwiek wpływ na wydajność :/

Pozdr.
DarekDariusz Sadowski edytował(a) ten post dnia 25.02.08 o godzinie 14:21
Przemek Szalko

Przemek Szalko iOS Developer + Full
Stack Developer

Temat: problem z kodowaniem polskich liter

Jeśli ma być ładniej, to może:

WHERE (`Surname` between 'I%' and 'M%' ) OR (`Surname` LIKE 'Ł%')

Następna dyskusja:

Dziwny problem w funkcji T-...




Wyślij zaproszenie do