Duda de ordenacion SQL

04/08/2008 - 18:35 por Vicente Flich | Informe spam
Buenas tardes,

Para simplificar mi duda, he creado una base de datos (PRUEBA) con una unica
tabla (llamada TABLA) y esta tabla solo contiene un campo (CODIGO, nchar(10)).

La tabla tiene como collation Traditional_Spanish_CI_AS, es decir, case
insentsitive y ordenacion Spanish (aunque he probado inclusi en English y
pasa lo mismo).

En la tabla meto los siguientes registros:

CODIGO
-
+
A+
A-
A+A
A-A

y ahora hago un SELECT * FROM TABLA ORDER BY CODIGO

Resulta que me da esta ordenacion:

-
+
A-
A+
A+A
A-A

Primero, me llama la atencion que en los 4 primeros registros ordena el -
antes que el + (cuando en la tabla ascii y tambien tambien en la pagina de
codigos 1252, el caracter + (ascii 43) va antes que el - (ascii 45).

Bueno, puedo aceptar que el collation ordene diferente lexicograficamente...
pero entonces no entiendo porque pone A+A antes que A-A.

¿Alguien puede aclararme esto? Me he dado cuenta de esto porque en una
aplicacion desarrollada en C++, al ordenar con el collate (con la funcion
strcoll()) el criterio es distinto... pero bueno, lo del C++ ya es esta fuera
del tema de esta news.

Gracias,

Vicente Flich

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
04/08/2008 - 22:10 | Informe spam
Vicente Flich,

Quizas estes interesado en usar una collation binaria como es
Traditional_Spanish_BIN2.


AMB


"Vicente Flich" wrote:

Buenas tardes,

Para simplificar mi duda, he creado una base de datos (PRUEBA) con una unica
tabla (llamada TABLA) y esta tabla solo contiene un campo (CODIGO, nchar(10)).

La tabla tiene como collation Traditional_Spanish_CI_AS, es decir, case
insentsitive y ordenacion Spanish (aunque he probado inclusi en English y
pasa lo mismo).

En la tabla meto los siguientes registros:

CODIGO
-
+
A+
A-
A+A
A-A

y ahora hago un SELECT * FROM TABLA ORDER BY CODIGO

Resulta que me da esta ordenacion:

-
+
A-
A+
A+A
A-A

Primero, me llama la atencion que en los 4 primeros registros ordena el -
antes que el + (cuando en la tabla ascii y tambien tambien en la pagina de
codigos 1252, el caracter + (ascii 43) va antes que el - (ascii 45).

Bueno, puedo aceptar que el collation ordene diferente lexicograficamente...
pero entonces no entiendo porque pone A+A antes que A-A.

¿Alguien puede aclararme esto? Me he dado cuenta de esto porque en una
aplicacion desarrollada en C++, al ordenar con el collate (con la funcion
strcoll()) el criterio es distinto... pero bueno, lo del C++ ya es esta fuera
del tema de esta news.

Gracias,

Vicente Flich
Respuesta Responder a este mensaje
#2 Vicente Flich
05/08/2008 - 08:27 | Informe spam
Lo pense, aunque preferiria la ordenacion case insensitive, ya que la
binaria distingue mayusculas/minusculas.

La verdad es que el unico problema es que no entiendo bien ese detalle de la
ordenacion y me causa problemas desde la aplicacion en que leo los datos.




"Alejandro Mesa" wrote:

Vicente Flich,

Quizas estes interesado en usar una collation binaria como es
Traditional_Spanish_BIN2.


AMB


"Vicente Flich" wrote:

> Buenas tardes,
>
> Para simplificar mi duda, he creado una base de datos (PRUEBA) con una unica
> tabla (llamada TABLA) y esta tabla solo contiene un campo (CODIGO, nchar(10)).
>
> La tabla tiene como collation Traditional_Spanish_CI_AS, es decir, case
> insentsitive y ordenacion Spanish (aunque he probado inclusi en English y
> pasa lo mismo).
>
> En la tabla meto los siguientes registros:
>
> CODIGO
> -
> +
> A+
> A-
> A+A
> A-A
>
> y ahora hago un SELECT * FROM TABLA ORDER BY CODIGO
>
> Resulta que me da esta ordenacion:
>
> -
> +
> A-
> A+
> A+A
> A-A
>
> Primero, me llama la atencion que en los 4 primeros registros ordena el -
> antes que el + (cuando en la tabla ascii y tambien tambien en la pagina de
> codigos 1252, el caracter + (ascii 43) va antes que el - (ascii 45).
>
> Bueno, puedo aceptar que el collation ordene diferente lexicograficamente...
> pero entonces no entiendo porque pone A+A antes que A-A.
>
> ¿Alguien puede aclararme esto? Me he dado cuenta de esto porque en una
> aplicacion desarrollada en C++, al ordenar con el collate (con la funcion
> strcoll()) el criterio es distinto... pero bueno, lo del C++ ya es esta fuera
> del tema de esta news.
>
> Gracias,
>
> Vicente Flich
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida