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

REGEXP MySQL (acentos y ñ)

Estas en el tema de REGEXP MySQL (acentos y ñ) en el foro de Mysql en Foros del Web. Estimados amigos, les cuento tengo la tabla sugerencias id | nombre 1 | Ñandú 2 | Caimán 3 | Mono 4 | Chimpancé la idea ...
  #1 (permalink)  
Antiguo 17/04/2013, 10:13
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años
Puntos: 12
REGEXP MySQL (acentos y ñ)

Estimados amigos,

les cuento tengo la tabla sugerencias

id | nombre
1 | Ñandú
2 | Caimán
3 | Mono
4 | Chimpancé


la idea es hacer una busqueda utilizando REGEXP

por ejemplo:

ejecutar esta consulta
Código SQL:
Ver original
  1. SELECT
  2.     nombre
  3. FROM sugerencias
  4. WHERE nombre REGEXP 'nandu'

y que me devuelva Ñandú como resultado.

¿como puedo hacer esto?

Gracias :)
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #2 (permalink)  
Antiguo 17/04/2013, 12:25
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: REGEXP MySQL (acentos y ñ)

Hola xalupeao:

En realidad tienes muchas formas para hacer esto, puede ser tan sencillo como verificar que tu tabla tenga un COLLATION case insensitive (_ci) o hacer algunos pequeños ajustes... checa este script;

Código MySQL:
Ver original
  1. mysql>mysql> CREATE TABLE tabla(
  2.     ->   nombre VARCHAR(30),
  3.     ->   PRIMARY KEY (`id`)) CHARSET=latin1 COLLATE=latin1_spanish_ci;
  4. Query OK, 0 rows affected (0.08 sec)
  5.  
  6. mysql> INSERT INTO tabla VALUES
  7.     -> (1, 'Ñandú'), (2, 'Caimán'), (3, 'Mono'), (4, 'Chimpancé'), (5,'Nandú'),
  8.     -> (6, 'ñandu'), (7, 'Nandu'), (8, 'nandÚ'), (9, 'ñandù'), (10,'Ñandü');
  9. Query OK, 10 rows affected (0.02 sec)
  10. Records: 10  Duplicates: 0  Warnings: 0
  11.  
  12. mysql> SELECT * FROM tabla;
  13. +----+-----------+
  14. | id | nombre    |
  15. +----+-----------+
  16. |  1 | Ñandú       |
  17. |  2 | Caimán     |
  18. |  3 | Mono      |
  19. |  4 | Chimpancé  |
  20. |  5 | Nandú      |
  21. |  6 | ñandu      |
  22. |  7 | Nandu     |
  23. |  8 | nandÚ      |
  24. |  9 | ñandù       |
  25. | 10 | Ñandü       |
  26. +----+-----------+
  27. 10 rows in set (0.00 sec)

Observa que en la tabla incluí muchas variaciones de la palabra que buscas, con mayusculas, minusculas, acentos, diéresis y acentos gráves (`) observa cómo puedes hacer las consultas:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla WHERE nombre REGEXP '[N|n|Ñ|ñ]and[U|u|Ú|ú|Ü|ü|Ù|ù]';
  2. +----+--------+
  3. | id | nombre |
  4. +----+--------+
  5. |  1 | Ñandú    |
  6. |  5 | Nandú   |
  7. |  6 | ñandu   |
  8. |  7 | Nandu  |
  9. |  8 | nandÚ   |
  10. |  9 | ñandù    |
  11. | 10 | Ñandü    |
  12. +----+--------+
  13. 7 rows in set (0.00 sec)

Observa que entre los corchetes ([]) coloco todos los posibles valores para las palabras... te repito esta es una forma de hacerlo, pero no es la única.

Saludos
Leo.
  #3 (permalink)  
Antiguo 18/04/2013, 09:39
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años
Puntos: 12
Respuesta: REGEXP MySQL (acentos y ñ)

Amigazo Leo, primero que todo gracias por tu respuesta.

creo que me he expresado mal, pero a lo que voy es que si ingreso el termino "nan" en el REGEXP este me arroje nandu y ñandu, es decir, interprete que n es igual ñ.

No se si se entiende.

Saludos y gracias.
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #4 (permalink)  
Antiguo 18/04/2013, 11:36
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: REGEXP MySQL (acentos y ñ)

Hola xalupeao:

Creo que el que no entendió fuiste tú amigo... tienes que modificar la expresión regular para que te reconozca los patrones que quieres, de lo contrario no habrá forma de obtener los datos que necesitas.

eso es lo que tienes que hacer, adecuar tu Expresión regular a lo que necesitas.

Saludos
Leo.

Etiquetas: acentos, regexp, select, tabla
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 12:38.