Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

SELECT con REGEXP como buscar un rango m-ñ???

Estas en el tema de SELECT con REGEXP como buscar un rango m-ñ??? en el foro de Bases de Datos General en Foros del Web. hola gente: tengo el siguiente inconvieniente: tengo un select en donde se puede seleccionar el rango a buscar (a-b, c-d, e-f, g-h, ...,m-ñ, etc.), la ...
  #1 (permalink)  
Antiguo 16/06/2005, 22:16
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 19 años, 6 meses
Puntos: 1
SELECT con REGEXP como buscar un rango m-ñ???

hola gente:

tengo el siguiente inconvieniente:

tengo un select en donde se puede seleccionar el rango a buscar (a-b, c-d, e-f, g-h, ...,m-ñ, etc.), la sentencia sql select que yo uso es:

SELECT * from mytabla where nombre REGEXP '^[$buscar]'

donde $buscar es el rango seleccionado en el select (a-b, c-d, e-f, g-h, ...,m-ñ, etc)

el problema radica cuando quiero buscar el rango m-ñ, sql no me acepta el caracter "ñ", y si cambio el rango m-n por m-o, en el resultado de la consulta me devuelve los nombre que empiezan con (m,n,o), pero los que empiezan con el caracter "ñ" no me aparecen.

si alguien tiene alguna sugerencia, le estaré eternamente agradecido.

de antemano muchas gracias.
  #2 (permalink)  
Antiguo 23/06/2005, 00:53
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 21 años, 4 meses
Puntos: 1
Básicamente tienes que modificar ligeramente la expresión regular para que busque coincidencias con "letras entre m-n o el caracter ñ". La expresión regular podría ser algo así:

Código:
SELECT * FROM nombre_tabla WHERE nombre_campo REGEXP '^([m-n]|ñ)'
Para que esta sentencia sea generada dinámicamente desde la entrada del usuario, una posibilidad es modificar un poco los valores de las opciones del elemento 'select' (según entiendo) para que puedan formar expresiones que no estén restringidas a estar dentro de los caracteres []. Por ejemplo:

Código:
<select name="buscar">
  <option value="[a-b]">A-B</option>
  <option value="[c-d]">C-D</option>
  (... etc...)
  <option value="([m-n]|ñ)">M-Ñ</option>
  (.. y más etc...)
</select>
Y luego tu sentencia se formaría a partir de:
Código:
SELECT * from mytabla where nombre REGEXP '^$buscar'
Otra opción sería simplemente usar una condición para verificar si la opción es "m-n" y en tal caso modificar la sentencia SQL acordemente.

No olvides validar los datos para evitar problemas de inyección SQL :).
  #3 (permalink)  
Antiguo 23/06/2005, 08:52
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 19 años, 6 meses
Puntos: 1
perfecto!!!!

Muchas gracias!!!
esto me saco la espina, funciono a la perfeccion!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:22.