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: