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

Problemas con la ñ

Estas en el tema de Problemas con la ñ en el foro de Bases de Datos General en Foros del Web. Cuando envío esta consulta: "select nombre,estilo,bpm,media from historial where nombre like 'ñ%' order by nombre asc" Entre los resultados aparecen nombres que empiezan por n... ...
  #1 (permalink)  
Antiguo 20/04/2004, 16:56
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Problemas con la ñ

Cuando envío esta consulta:

"select nombre,estilo,bpm,media from historial where nombre like 'ñ%' order by nombre asc"

Entre los resultados aparecen nombres que empiezan por n...

¿Cómo puedo hacer para que reconozca la ñ correctamente?

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #2 (permalink)  
Antiguo 21/04/2004, 10:57
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Me puse a buscar y lo que encontre a mano y funcional fue convertir el caracter a ASCII. Tomando de referencia tu ejemplo, quedaría así:

Opción 1:
Código PHP:
SELECT nombre,estilo,bpm,media
FROM historial 
WHERE ASCII
(SUBSTRING(nombre,1,1) = 241
ORDER BY nombre ASC 
ñ = 241
Ñ = 209

Opción 2:
Código PHP:
SELECT nombre,estilo,bpm,media
FROM historial 
WHERE ASCII
(SUBSTRING(nombre,1,1) = ASCII('ñ')
ORDER BY nombre ASC 
Para la segunda opción, sustituirias ASCII('ñ') por la variable que uses en php, ASP o lo que sea. ASCII("$caracter").

Estoy suponiendo que usas MySQL, si es así, te dejo la referencia de las funciones con literales que podrías usar.

13.3 String Functions

En caso de usar otro motor de BD, busca en las funciones propias de la misma.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL

Última edición por BrujoNic; 21/04/2004 a las 11:01
  #3 (permalink)  
Antiguo 21/04/2004, 12:01
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
BrujoNIc, gracias por la respuesta, suponía que tenía que ser algo así, efectivamente uso MySql y PhpMyAdmin, pero me dá un error de sintaxis en ambas consultas, he probado de varias formas pero nada...

Uso la versión 4.0.18 de mysql, debería soportar esas funciones...

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #4 (permalink)  
Antiguo 21/04/2004, 14:15
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
No se si esas funciones trabajen en MySQL, pero yo las reconozco de SQL Server, concretamente SUBSTRING() y ASCII()

En caso de que fuera T-SQL (el dialecto de SQL Server) tendrías que buscar las sentencias equivalentes a MySQL
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 21/04/2004, 16:21
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
El problema de lo que te recomendé, es que me falto un ")", disculpa.

Te dejo TODO a como hice mis pruebas...
Versión de MySQL 4.0.17 diferencia es nula a la 4.0.18
Tabla creada:
Código PHP:
# Estructura de tabla para la tabla `tabla`
#

CREATE TABLE `tabla` (
  `
nombrevarchar(15NOT NULL default ''
TYPE=MyISAM;

#
# Volcar la base de datos para la tabla `tabla`
#

INSERT DELAYED INTO `tabla` (`nombre`) VALUES ('ñame'),
(
'Ñame'),
(
'ñandú'),
(
'Ñandú'),
(
'ñu'),
(
'Ñu'),
(
'nada'),
(
'Nando'),
(
'naríz'),
(
'Nuevo'); 
Tu consulta:
Código PHP:
SELECT  
FROM  tabla
WHERE nombre
LIKE  
'ñ%' ORDER BY nombre ASC 
Consultas recomendadas:
Opción 1:
Código PHP:
SELECT  
FROM tabla
WHERE ASCII
SUBSTRINGnombre11  )  )  =241
ORDER  BY nombre ASC 
Código PHP:
SELECT  
FROM tabla
WHERE ASCII
SUBSTRINGnombre11  )  )  =209
ORDER  BY nombre ASC 
Opción 2: tendrías que chequearla ya que es por programación pero funciona.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL

Última edición por BrujoNic; 21/04/2004 a las 16:24
  #6 (permalink)  
Antiguo 22/04/2004, 10:33
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias Mithrandir y sobre todo a ti BrujoNic, que detalle que yo tampoco me fije en el )

Saludos y gracias de nuevo.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
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 19:14.