From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Gustavo <gustavor(at)intercomgi(dot)net> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Manejo de strings en consulta |
Date: | 2008-01-11 19:44:17 |
Message-ID: | 20080111194417.GA8260@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Gustavo escribió:
> Alvaro, va mejorando la cosa, pero todavia no lo puedo hacer andar: Hay un
> problema de escapado que no se como arreglarlo. Estuve buescando en la
> lista y no encontre nada similar.
>
> SELECT * FROM servicio.recurso r WHERE E'C:\\\\Documents and
> Settings\\\\Gustav\\\\Escritorio\\\\TallerUML\\\\12-09\\\)
> Entrega2\\\\Software Architecture Document.doc' ~ ('^'||r.full_path);
>
> Me tira el error
>
> ERROR: invalid regular expression: invalid escape \ sequence
> Estado SQL:2201B
>
> Caluclo que tengo que escapar la columna r.full_path. Como puedo hacer.?
Efectivamente, tienes que escapar. Lo mas obvio es escapar los
backslashes, que puedes hacer asi:
regexp_replace(full_path, e'\\\\', e'\\\\\\', 'g'))
(huh!)
lo cual te daría lo siguiente:
select full_path,
E'C:\\Documents and Settings\\Gustav\\Escritorio\\TallerUML\\12-09\\Entrega2\\Software Architecture Document.doc' ~ ('^' || regexp_replace(full_path, e'\\\\', e'\\\\\\', 'g'))
from recurso;
Ahora, la mala noticia es que además debes escapar otros caracteres,
como *, los paréntesis, el punto, los corchetes, y no sé qué más. Algo
así:
select full_path,
E'C:\\Documents and Settings\\Gustav\\Escritorio\\TallerUML\\12-09\\Entrega2\\Software Architecture Document.doc' ~ ('^' || regexp_replace(full_path, e'([\\\\*.(){}])', e'\\\\\\1', 'g')), ('^' || regexp_replace(full_path, e'([\\\\*.(){}])', e'\\\\\\1', 'g'))
from recurso;
Ahora falta ver qué otros caracteres deben escaparse ...
www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP
De una ojeada creo que son (además de los de arriba):
[ + ? ^ $
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2008-01-11 20:33:37 | Re: Variables Dinamicas |
Previous Message | Raul Andres Duque | 2008-01-11 18:48:11 | Re: Como hago un job en postgres? |