ďťż
 
[Postgresql][PL/SQL] jak rozlozyc zapytanie na slowa kluczowe ? ďťż
 
[Postgresql][PL/SQL] jak rozlozyc zapytanie na slowa kluczowe ?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[Postgresql][PL/SQL] jak rozlozyc zapytanie na slowa kluczowe ?



Adam - 13-11-2006 00:48
[Postgresql][PL/SQL] jak rozlozyc zapytanie na slowa kluczowe ?
  Witam,

Mam funkcje szukaj(zapytanie VARCHAR). W zapytaniu mam poprawne slowa
kluczowe oddzielone spacjami. Chce moc rozlozyc stringa 'zapytanie' na
pojedyncze slowa bym mogl zrobic cos takiego:

SELECT * FROM tabela WHERE kluczowe ILIKE '%slowo1%' AND kluczowe ILIKE
'%slowo2%' ....

i tak dalej dla wszystkich slow.

Tutaj rodzi sie pytanie, jak to zaimplementowac jesli nie wiem, ile
bedzie tych slow kluczowych. Zapytanie na slowa zamierzam rozbic sobie
przy pomocy petli i split_part() ale nie mam pojecia jak zrobic SELECT.

Czy istnieje jakas mozliwosc zrobienia sobie zmiennej typy VARCHAR,
wypelnienia jej trescia zapytania (tmp = 'select * from...') i pozniej
uruchomienie tego jako komenda SQL ?

Dzieki za pomoc,
Adam





Michał Kuratczyk - 13-11-2006 00:48

  Adam wrote:
> Czy istnieje jakas mozliwosc zrobienia sobie zmiennej typy VARCHAR,
> wypelnienia jej trescia zapytania (tmp = 'select * from...') i pozniej
> uruchomienie tego jako komenda SQL ?

http://www.postgresql.org/docs/8.1/i...-EXECUTING-DYN

--
Michał Kuratczyk




Adam - 13-11-2006 00:48

  <ciach>

Juz znalazlem :)

moze komus sie przyda:

Najpierw skladamy sobie stringa a potem wykonujemy (w przykladzie potam
gotowego stringa)

FOR rekord IN EXECUTE 'SELECT blabla' LOOP
...
END LOOP;

pozdr,
Adam




hubert depesz lubaczewski - 13-11-2006 00:48

  On 2006-11-07, Adam <a@a.com> wrote:
> Najpierw skladamy sobie stringa a potem wykonujemy (w przykladzie potam
> gotowego stringa)
> FOR rekord IN EXECUTE 'SELECT blabla' LOOP
> ...
> END LOOP;

bardzo kiepski sposób.
jeśli w stringu masz słowa kluczowe oddzielone spacjami, to zamień
spacje na znaki |, i potem zrób:
for rekord in select * from tabelka where pole ~ wartosc_parametru LOOP

depesz

--
mój boże, spraw abym milczał, dopóki się nie upewnię, że naprawdę mam
coś do powiedzenia. (c) 1998 depesz





herakles - 13-11-2006 00:48

  [ciach]

jest tu już kilka odpowiedzi, ale ja bym to elegancko rozwiązał tak:

select * from ff_szukaj('ten tekst wyszukuj') order by ....

do tego proponowałbym stworzyć tabelkę cacheującą wyniki wyszukiwania, tak,
żeby kolejne wyszukiwanie tych samych słów było szybsze. No i oczywiście
aby ff_szukaj załatwiała wszystkie problemy. A funkcję to już pokombinuj z
EXECUTE
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?= ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?= phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ptsite.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com