Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z wyrażeniami regularnymi sql oracle
tomsu
post 1.10.2014, 19:24:17
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 1.10.2014

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


Cześć, piszę gdyż natknąłem się na dziwny problem, z którym nie mogę sobie poradzić. Otóż napisałem kod (w skrócie napiszę tylko problematyczny fragment) :
SELECT * FROM tabela a
WHERE REGEXP_LIKE (
UPPER ( TRANSLATE ( a.nazwa1, 'ĄąĆćĘꣳŃńÓ󌜯żŹź-' ,'AaCcEeLlNnOoSsZzZz ') ),
UPPER ( TRANSLATE ( SUBSTR ( a.nazwa2, 0, INSTR ( a.nazwa2, ' ') -1 ),
'ĄąĆćĘꣳŃńÓ󌜯żŹź-' ,
'AaCcEeLlNnOoSsZzZz ') ) )
)

Ogólnie mój kod (cały, złożony z tych powyższych składni) ma za zadanie sprawdzenie, czy w nazwa1 znajduje się pierwsze słowo z nazwa2 i drugie słowo z nazwa2. Atrybuty nazwa1 i nazwa2 są napisami składającymi się z różnych znaków. Dla lepszego przeszukiwania pozbywam się polskich znaków oraz sprowadzam znaki do jednej wielkości.
Wyskakuje mi błąd "ORA-12725 niezrównoważone nawiasy w wyrażeniu regularnym".
Sprawdziłem wielokrotnie, z nawiasami wszystko w porządku. Dodam, że dla małej bazy zapytanie ładnie śmiga, problem pojawia się jak przepuszczam ją przez znacznie większą. Poza tym zapytanie wypisuje dane, a jak chce wypisać więcej lub dorzucam DISTINCT'a po chwili wypisywania wywala błąd. Z tego względu podejrzewam, że jakaś krotka psuje zapytanie. Czy ktoś wie jak rozwiązać mój problem? Niestety mi już pomysły się skończyły i nie wiem co jest źle ...
Go to the top of the page
+Quote Post
mmmmmmm
post 1.10.2014, 21:07:21
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Sądzę, że to jenak baza ma rację... Nawiasów ( masz 7, a nawiasów ) masz 8.
Go to the top of the page
+Quote Post
tomsu
post 1.10.2014, 21:38:42
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 1.10.2014

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


To na pewno nie jest problem z nawiasami, gdyż je wielokrotnie sprawdzałem, a tutaj tylko źle przepisałem. Poza tym fakt, że na małej bazie przechodziło bez problemu świadczy, że jest z tym ok. Podejrzewam, że może coś nie tak ze znakami w analizowanych danych? Pojedyńcze apostofy mogą psuć?
Go to the top of the page
+Quote Post
trueblue
post 2.10.2014, 08:58:36
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Drugi argument dla REGEXP_LIKE to wyrażenie regularne, u Ciebie tak nie jest.


--------------------
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: 19.03.2024 - 12:52