Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/05/2012, 05:09
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Expresión Regular amigable

miktrv,
echa un vistazo a las expresiones regulares en MySQL y verás que en el manual sólo se usan para select y devuelven 1 o 0. No parecen permitir todo lo que se permite en programación. No soy un especialista en ello, ni siquiera un buen conocedor, pero me da la impresión de que no podrás hacer lo que quieres con eso directamente en la base, es decir, decirle que te busque el elemento [a|A|Á|á|À|à|â]1 y lo cambie por a, al menos con una consulta y sin usar funciones o procedimientos almacenados. Solo lo he visto usado en MySQL para consultas de select que devuelve verdadero o falso
Mira no obstante aquí:
http://techras.wordpress.com/2011/06...ace-for-mysql/
para que veas las posibles soluciones con funciones y procedimientos, aunque si lo devuelves y no lo almacenas no será fácil buscarlos. Si sólo es para mostrar, podrías hacer una función en la que entrara la cadena y quedara convertida, y luego la llamarías, eso creo que sería posible.
Consultas con replace anidados podrían servir, pero son muchas las anidaciones.
SELECT REPLACE(LOWER(REPLACE(REPLACE(tucampo,' ', '-'),'&','')),'ó','o') FROM tutabla
Por otra parte, aunque entiendo tu posición de no querer almacenar en dos campos lo que dices que es lo mismo, pero que en realidad no lo es. Si necesitas una cadena como esa para la url y quieres buscarla rápido y de manera eficiente, ese nuevo campo que guarda la cadena una vez indexado te permitirá consultas rápidas. Luego está el problema de las coincidencias. A mí se me dio el caso de que al hacer lo que dices sobre una cadena utf8 se producían coincidencias y ya no eran valores únicos, imagina las cadenas tú, gato y tu gato; su conversión daría el mismo resultado tu-gato, y ello requiere un control de coincidencias y añadir, en caso de producirse el identificador al final o algo así. Naturalmente, tienes que estar atento a la codificación.

Última edición por jurena; 27/05/2012 a las 05:28