![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
czesc,
uzywam REGEXP BINARY do szukania jak LIKE ale z uwzglednieniem wielkosci znakow. Wszystko jest ok, dopoki nie uzyje niektorych znakow, takich jak np + czy ? zapytanie wyglada mniej wiecej tak:
i na takim sie krzaczy a ja dostaje: Got error 'repetition-operator operand invalid' from regexp jesli bym dala bez + to byloby ok. Czy ktos z Was wie moze jak mozna to naprawic? pzdr, misty |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Wyrażenia regularne mają pewne znaki specjalnie. Jeżeli chcesz by były traktowane jako zwykłe znaki poprzedź je znakiem ucieczki: \+
2. Dlaczego nie skorzystasz z LIKE-a z uwzględnieniem wielkości znaków? LIKE sam w sobie to beznadziejny mechanizm wyszukiwania, ale wyrażenia regularne to już kompletne nieporozumienie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
hej,
ale istnieje LIKE ktory porownuje wielkosc znakow? szukalam ale nie znalazlam takiego-stad wyrazenia regularne. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Sposób porównywania znaków jest określany przez atrybut COLLATION kolumny. Ewentualnie jeżeli chcesz w tym konkretnym przypadku zastosować inne porównywanie znaków, niż domyślne dla kolumny, użyj następującej składni:
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
no, a jesli nie znam COLLATE?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
widzisz, ale ja nie mam uprawnien do ustawiania czegokolwiek na bazie. ja juz szukalam wyjscia z like no i w moim wypadku nie da sie. a wyrazenia regularne.. sa ok, tylko trzeba wiedziec jak ich uzyc.. i na pewno na moj problem tez jest sposob..
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Przecież fragment kodu jaki podałem to zwykłe zapytanie (SELECT) do bazy, które nic nie modyfikuje.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
no tak, ale ja pisalam ze nie znam COLLATE, wiec nie moge wykonac tego:
nie mam rowniez uprawnien takich aby wykonac:
wracajac do Twojej wczesniejsze wypowiedzi, zeby poprzedzac znakiem ucieczki, to dziala (czesciowo przynajmniej) z podwojnym znakiem \\, ale niestety sypie sie jak dam np ?"\[i' dostaje ze mysql error: Got error 'brackets ([ ]) not balanced' from regexp ![]() pzdr, misty jakby ktos mial kiedys taki problem jak ja-wyglada na to ze jednym rozwiazaniem jest stawianie \\ przed kazdym takim specjalnym znakiem. pzdr Ten post edytował misty 2.12.2011, 07:49:47 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Przecież podałem Ci linka gdzie masz opisane systemy porównywania znaków (collations). Wybierz te , które odpowiada Twojemu kodowaniu (utf8_*, latin2_*) i oczekiwanym porownywaniem znaków (*_cs, *_ci).
2. Do SET NAMES nie potrzebujesz żadnych uprawnień. To charakteryzuje jedynie kodowanie / porównywanie znaków dla połączenia na linii klient - serwer. 3. Znak ucieczki to "\", nie "\\". "\\" to znak ucieczki przed znakiem ucieczki, czyli literał "\". |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 13:32 |