Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/12/2010, 06:35
haga41
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 15 años, 10 meses
Puntos: 0
Problema con caracteres especiales como primer caracter de las búsquedas.

Hola a todos,

Tengo un problema para realizar algunas búsquedas en MySql que no se muy bien como arreglar, la única forma que me ha funcionado hasta ahora es demasiado compleja y depende más de PHP que de MySql así que imagino que debe haber una forma más sencilla de hacerlo directamente en MySql.

El problema que tengo es el siguiente tengo una base de datos de películas y una búsqueda alfanúmerica en PHP, cuando el título de las películas empieza por un número o por una letra ambas búsquedas funcionan perfecamente pero a veces el título empieza por un signo de interrogación, paréntesis, etc y tengo que "parchearlo". En la búsqueda alfabética es relativamente fácil y sólo tengo que hacer algunos apaños como variables de PHP pero en la búsqueda númerica me saldrían muchísimas más líneas de código por lo que me imagino que habrá alguna forma mejor de solucionarlo.


El código actual es el siguiente y me encuentra todas las películas que comienzen por 0,1,2,3,4,5,6,7,8 o 9:

$sql = "Select * from peliculas WHERE Titulo RLIKE '^[0-9].*' ";

Lo que yo quiero es que me busque no sólo las que comienzen por esos números sino las que comienzen por (, ¿, " o ¡ y justo después venga cualquiera de esos números pero no encuentro una forma limpia de hacerlo. La única que se me había ocurrido hasta ahora era crear variables en PHP con los valores posibles: (0, (1, etc y encadenar las consultas usando OR pero tiene que haber una manera mejor, esta es la única manera que se me ha ocurrido hasta ahora y que funciona.

$parentesis = chr(40);
$n1 = $parentesis."1";
$sql = "Select * from peliculas WHERE Titulo like '" .$n1. "%' OR Titulo RLIKE '^[0-9].*' ";

Si podéis ayudarme o darme alguna pista de como hacerlo de forma más fácil os lo agradecería mucho.