![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) ![]() ![]() |
Zastanawiam się, jak byście rozwiązali sprawę tworzenia składni dla klauzuli WHERE i w jaki sposób takową składnię sparsować??
Ja wpadłem na taką składnię:
gdzie przecinek oznacza domyślnie operator logiczny AND i coś takiego:
gdzie '+' oznacza AND, a '-' oznacza OR. No i jeszcze trzeba doliczyć operatory porównania: '=', '!=', '<', '>', '<=', '>=' i może jakieś wyrażenia regularne proste, np. '%', '^', '$', gdzie '%' oznacza, że nie liczy się umiejscowienie treści w wartości kolumny, '^' oznacza, że treść musi się znaleźć na początku wartości kolumny, a '$' oznacza, że treść musi się znaleźć na końcu wartości kolumny. Możnaby też nie używać nawiasów i zastosować same AND i OR w jawnej postaci, ale to by trochę utrudniło sprawę parsowania. A odnośnie parsowania, to głównym problemem jest dokładne określenie stringu jako treści, bo może być przecież taka sytuacja: colname='content' i za content podstawiamy, np. "jakaś_treść' colname='content'". No i jeszcze sposób w jaki wyciągniemy wszystkie dane: zdecydowanie najłatwiej z czegoś takiego:
No i oczywiście trzeba ustandaryzować w jakiś sposób znaki nowego wiersza i linii: czyli musimy wszystkie takowe znaki zamienić na jeden rodzaj, np.
no i potem je jakoś wyeliminować, za pomocą jakiegoś bardzo rzadko spotykanego zestawu znaków lub znaku, np.
Może ktoś ma jakieś ciekawe rozwiązanie i się nim zechce podzielić, lub też potrafi sparsować zapytanie bez nawiasów z jawnymi operatorami logicznymi: AND i OR ? -------------------- Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..." Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL" |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:35 |