Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/09/2013, 06:53
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Caracteres de Escape de Postgresql

Cita:
si en la cadena a buscar la persona ingresa mas de un apostrofe (') como haría para quitarlos a todos o colocarle el caracter de escape
Eso lo deberías controlar en el ingreso de los datos, en la aplicación, y no en la base de datos. ¿no te parece?

Por otro lado, según el manual de referencia de PostgreSQL, esa forma de usarlo es correcta, pero como mencionas que usas PHP, cabe preguntarse si el problema no lo está provocando el propio PHP.
Debes tener en cuenta que dentro del PHP, el escape tiene impacto cuando manipulas cadenas de texto, de modo que en realidad puede estar produciendose una doble ejecución del escape.
¿A qué me refiero?
Simplemente a que si esa sintaxis la estás creando en una cadena de texto dentro del PHP, el PHP ya está absorbiendo el uso del escapado, y por tanto deja de existir el caracter al momento de enviarlo a Posgre.
En otras palabras, deberías verificar cómo queda la query antes de enviarla a la base. Muy probablemente en lugar de estar así:
Código SQL:
Ver original
  1. OR UPPER(d.docbib_titulo) LIKE UPPER('%\'%')
si la imprimes en pantalla, aparezca así:
Código SQL:
Ver original
  1. OR UPPER(d.docbib_titulo) LIKE UPPER('%'%')
Si eso es lo que está sucediendo, la solución es simple: Hay que escapar el escape. Uno para que lo consuma PHP, y otro para Posgre.
Código SQL:
Ver original
  1. OR UPPER(d.docbib_titulo) LIKE UPPER('%\\'%')
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)