Ir al contenido


Foto

[RESUELTO] Problema con order by y caracter Ñ


  • Por favor identifícate para responder
13 respuestas en este tema

#1 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 04 enero 2010 - 10:14

Hola

Tengo un pequeño (pero gran) problema con una consulta a una tabla Firebird, la consulta es muy básica y es la siguiente:



sql
  1. SELECT * FROM tabla
  2. ORDER BY nombre_completo



La cual genera el siguiente listado :


.........
PEDRAZA ROJAS MARIA
PEREZ MARTINEZ PATRICIA
PEÑA NIETO RICARDO
.........


El problema es que no está ordenando correctamente la letra 'Ñ' que debería estar antes que la letra 'R', tengo asignado el charset en ISO8859_1 que supone es para español.

por otro lado si 'escribo' ese listado en un ListBox, lo ordena bien y me coloca la 'Ñ' antes de la 'R'.

¿ Alguna sugerencia de como solucionar este problema ?

Salud OS
  • 0

#2 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 04 enero 2010 - 10:30

Creo que el problema se soluciona con un collate, dejame verificar y te digo
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 04 enero 2010 - 10:32

Creo que el problema se soluciona con un collate, dejame verificar y te digo


Bueno, el campo en cuestión tiene el charset y el collate asignados a ISO8859_1

Salud OS
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 04 enero 2010 - 10:33

Quizás este artículo te de una idea:

http://www.destructo...rd/charsets.htm

Saludos.
  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 04 enero 2010 - 10:39

Genial

Muchas gracias Fernando y luk.

He resuelto el problema haciendo esto



sql
  1. SELECT * FROM tabla
  2. ORDER BY nombre_completo COLLATE ES_ES



Ahora si, me asigna bien el order by.

.........
PEDRAZA ROJAS MARIA
PEÑA NIETO RICARDO
PEREZ MARTINEZ PATRICIA
.........


Salud OS
  • 0

#6 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 04 enero 2010 - 11:03

.....


.........
PEDRAZA ROJAS MARIA
PEÑA NIETO RICARDO
PEREZ MARTINEZ PATRICIA
.........

...


A mí se me hace que es otro el verdadero problema  +o(

Saludox ! :D
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 04 enero 2010 - 11:05

A mí se me hace que es otro el verdadero problema  +o(

Saludox ! :D


Ya ya, sabía que iba a pasar, era cosa de tiempo :p :D :D :D

Salud OS
  • 0

#8 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 04 enero 2010 - 01:14

Saludos.

Si tienes Firebird V2.1 puedes utilizar el Collate ES_ES_CI_AI que es para español además de ser case insensitive no toma en cuenta los acentos al momento de la ordenación.
  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 04 enero 2010 - 01:20

Saludos.

Si tienes Firebird V2.1 puedes utilizar el Collate ES_ES_CI_AI que es para español además de ser case insensitive no toma en cuenta los acentos al momento de la ordenación.


Gracias amigo Rolphy, lo voy a probar.

Salud OS
  • 0

#10 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 08 enero 2010 - 05:39

Saludos.

Si tienes Firebird V2.1 puedes utilizar el Collate ES_ES_CI_AI que es para español además de ser case insensitive no toma en cuenta los acentos al momento de la ordenación.


Es muy recomendable usar este Collate Set, puesto que además de no tener en cuenta acentos y mayúsculas-minúsculas durante la ordenación, tampoco los tiene en cuenta en las búsquedas.

Es decir una consulta SELECT * FROM CLIENTES WHERE NOMBRE = 'JOSE' te va a devolver tanto a los que tengan como nombre "JOSE", "Jose", "jose", ... mientras que con el collate ES_ES solo encontraría los primeros.

Igual ocurre con los acentos, un SELECT * FROM CLIENTES WHERE APELLIDO = 'GARCIA' te va a encontrar todos los García, se hayan entrado con o sin acento.

Saludos.
  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 enero 2010 - 12:13

Muchas gracias por la información y si, usaré ese 'Collate' de ahora en adelante. :)

Salud OS
  • 0

#12 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 08 enero 2010 - 02:42

http://www.delphiacc...p?topic=1383.0

que se sepa que ya este tema lo habiamos tocado en el foro  y como se dice que recordar es vivir!! :wink: (y)
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 enero 2010 - 03:19

En mi defensa alegaré que llevaba 3 copas, jejejejejee

Bueno, es que en ese hilo se buscaban mayúsculas y aquí no :p

No perdonas una jejejeje

Salud OS
  • 0

#14 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 enero 2010 - 03:35

Por cierto, lo he asignado como tema [RESUELTO]

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.