jueves, 29 de mayo de 2025

Ordenar resultados en distintos idiomas, por Javier Morales

No hay base de datos que me haya encontrado en que las Ñ se almacenen como Ñ, ni sitio donde los caracteres especiales se visualicen "raros".

En el código SQL siempre veo cosas raras. REGEXP(), TRANSLATE(), REPLACE(),... soluciones creativas que esconden horas de romperse los cuernos para que los resultados salgan ordenados como toca.

O directamente la resignación de que "Oracle no ordena bien", y que la Ñ sale al final, o que directamente los "NUÑEZ" se convierten en "NUNEZ".

Que levante la mano quien tenga un apellido con Ñ, o un nombre con Ç, y la correspondencia le llegue mal escrita.

Y no sólo eso, no es lo mismo ordenar en español, en francés, en catalán o en noruego.

Por ejemplo, en catalán no existe la CH como letra del alfabeto, por lo que debe colocarse ordenada como C y como H.

Pues venga, vamos al tajo.

Lo primero es usar la cláusula COLLATE correctamente en la construcción del ORDER BY de la SELECT.

¿Cómo?

¿No conoces la cláusula COLLATE?

¿No sabías que le puedes pedir a Oracle que te ordene los resultados según un idioma concreto?

Pues no sólo eso, también le puedes decir que, según tu versión "tuneada" del español, los caracteres se ordenen como tú le decidas.

Hala, aquí te dejo mi último artículo.

Domina las ordenaciones de filas según idioma a lo PRO style.

​A disfrutar!
Un abrazo,
Javier

​PD: Se viene Lección Maestra sobre este tema, para solucionar los problemas de ordenaciones con caracteres raros, con sesiones de idioma extrañas, con cositas extrañas que hace Windows (por ejemplo) para que los caracteres se inserten como le da la gana,...

PD2: Quizás me la plantee como Laboratorio, y lo haga en directo... no sé... ¿qué opinas? ¿te interesa la solución definitiva a este problemón que no dejo de ver allí donde voy? ¿tienes tú también algún caso así?

PD3: También está en inglés, cambiando la bandera de idioma en el menú superior.

No hay comentarios:

Publicar un comentario

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM