[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: aiuto regexp



Ottavio Campana ha scritto:
Alberto wrote:

Prova con questa:

/(?=.*\bpippo\b)(?=.*\bpluto\b)/


nel postgres non mi va, però ci lavoro su.

come ti hanno suggerito è più semplice utilizzare più espressioni regolari

se la tua tabella si chiama TAB e la colonna si chiama COL

$ select * from TAB;
         COL
------------------------
 pippo, pluto
 pippo, paperino, pluto
 pippo, paperino
(3 righe)

per poter avere solo le righe che ti interessano è sufficiente

$ select * from TAB where COL ~ 'pippo' and COL ~ 'pluto';
        COL
------------------------
 pippo, pluto
 pippo, paperino, pluto
(2 righe)

Se non sbaglio l'unica differenza tra questo metodo e quello che ti ha suggerito Alberto è che la prima ti trova anche stringhe tipo 'pippopluto', mentre la seconda no.

Se devi confrontare più di due stringhe e fare questo tipo di AND, allora è sufficiente buttare tutte le stringhe in una tabella e metterle in "join" in qualche modo ... per esempio

$ select * from TAB where (select count(*) from TAB_AND) = (select count(*) from TAB_AND where TAB.COL ~ TAB_AND.COL);

in questo modo dovresti riuscire a gestire anche un numero dinamico di stringhe da controllare in modo molto semplice ... e volendo puoi fare una vista che ritorna questo risultato (se ti serve avere le COL che soddisfano queste condizioni come output)

Ciao
Davide

--
Dizionari: http://linguistico.sourceforge.net/wiki
Conoscere il TC: http://www.no1984.org
Strumenti per l'ufficio: http://it.openoffice.org
Sistema operativo: http://www.it.debian.org
Browser: http://www.mozilla.org/products/firefox
Client di posta: http://www.mozilla.org/products/thunderbird
GNU/Linux User: 302090: http://counter.li.org
--
Non autorizzo la memorizzazione del mio indirizzo di posta a chi usa
outlook: non voglio essere invaso da spam



Reply to: