es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La ordenación de Postgres no funciona en caracteres especiales usando collate.

Si ejecuto el script de PostgreSQL utilizando collate, obtengo el resultado ordenado solo con “.” y no se considera el ““. Quiero que los caracteres especiales “.” y “” se ordenen primero, seguidos por el alfabeto.
“`
PostgreSQL:
SELECT * FROM test<em>spl</em>char ORDER BY CHR_NM COLLATE "C";

<h2>Output:</h2>

.GEMS
BISCUIT
CANDY
DONUT
YUM
_SHAKE

show lc_collate;

<h2>Output:</h2>

en_US.UTF-8
“`

Por favor, ayúdeme a obtener el resultado ordenado con caracteres especiales primero.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para ordenar los datos con caracteres especiales primero, puede modificar su consulta para usar la función ASCII para obtener el valor ASCII de cada carácter y ordenar por ese valor. Aquí hay un ejemplo:

    SELECT * FROM test_spl_char 
    ORDER BY ASCII(SUBSTR(CHR_NM, 1, 1)) DESC, CHR_NM COLLATE "C";
    

    Esta consulta ordenará los datos primero por el valor ASCII del primer carácter en cada cadena (orden descendente) y luego por la cadena real utilizando la colación C. Esto le dará efectivamente el orden deseado de los caracteres especiales primero, seguido por los alfabetos.

    Puede ajustar el orden ASC / DESC en la cláusula ORDER BY para cambiar el orden de los caracteres especiales si es necesario. ¡Espero que esto ayude!

Comments are closed.