ordenacion de datos con carácter "-"

11/10/2005 - 13:19 por javier zabaleta | Informe spam
Hola a todos:

Tengo el siguiente problema: los datos que incorporan el carácter "-"
(guión) me aparecen mal ordenados. El caso es que SQL Server ignora por
completa dicho carácter al hacer un order by. Por ejemplo, en lugar de:
A
A-CA
A-ZC
AD

Veo:
A
A-CA
AD
A-ZC

Estoy utilizando SQL Server 2003, con nivel de Intercalación
Spanish_Modern_CI_AS. He probado Con CI_AI, pero nada.
Alguien tiene alguna psta?

Gracias por vuestra ayuda.

Preguntas similare

Leer las respuestas

#1 Maxi
11/10/2005 - 14:02 | Informe spam
Hola, a mi esto me funciona lo mas bien

create table #pepe (valor varchar(30))

insert into #pepe values('A')
insert into #pepe values('A-CA')
insert into #pepe values('A-ZC')
insert into #pepe values('AD')

SELECT * FROM #PEPE ORDER BY VALOR


Salu2
Maxi MVP SQL SERVER


"javier zabaleta" (donotspam)> escribió en el mensaje
news:
Hola a todos:

Tengo el siguiente problema: los datos que incorporan el carácter "-"
(guión) me aparecen mal ordenados. El caso es que SQL Server ignora por
completa dicho carácter al hacer un order by. Por ejemplo, en lugar de:
A
A-CA
A-ZC
AD

Veo:
A
A-CA
AD
A-ZC

Estoy utilizando SQL Server 2003, con nivel de Intercalación
Spanish_Modern_CI_AS. He probado Con CI_AI, pero nada.
Alguien tiene alguna psta?

Gracias por vuestra ayuda.
Respuesta Responder a este mensaje
#2 Alejandro Mesa
11/10/2005 - 16:00 | Informe spam
Javier,

Ese orden no es un orden logico. Por que el valor "A-ZC" debe estar entre
"A" y "AD"?. El caracter "-", no esta comprendido entre A - Z, asi que por
logica, o se ignora:

A
A-CA
AD
A-ZC

o se saca fuera del rango.

A
AD
A-CA
A-ZC

si quieres aplicar tu propia logica, entonces tendras que decirle a sql
server cual es la logica a usar. Voy ha aprovechar la ddl y data de ejemplo
que Maxi posteo, para exponer un ejemplo.

use northwind
go

create table #pepe (valor varchar(30) collate Traditional_Spanish_CI_AS)

insert into #pepe values('A-ZC')
insert into #pepe values('AD')
insert into #pepe values('A')
insert into #pepe values('A-CA')

SELECT *
FROM #PEPE
ORDER BY
case
when valor like '%[^A-Za-z]%' then left(valor, patindex('%[^A-Za-z]%',
valor) - 1)
else valor
end asc,
case
when valor like '%[^A-Za-z]%' then right(valor, patindex('%[^A-Za-z]%',
reverse(valor)))
else valor
end asc

drop table #pepe
go


AMB



"javier zabaleta" wrote:

Hola a todos:

Tengo el siguiente problema: los datos que incorporan el carácter "-"
(guión) me aparecen mal ordenados. El caso es que SQL Server ignora por
completa dicho carácter al hacer un order by. Por ejemplo, en lugar de:
A
A-CA
A-ZC
AD

Veo:
A
A-CA
AD
A-ZC

Estoy utilizando SQL Server 2003, con nivel de Intercalación
Spanish_Modern_CI_AS. He probado Con CI_AI, pero nada.
Alguien tiene alguna psta?

Gracias por vuestra ayuda.
Respuesta Responder a este mensaje
#3 Saul Batista
12/10/2005 - 21:25 | Informe spam
Javier,

a mi me funciona el ejemplo de Maxi, pero dime
que collation tienes en la BD ?

Saul Batista

"javier zabaleta" (donotspam)> wrote in message
news:
Hola a todos:

Tengo el siguiente problema: los datos que incorporan el carácter "-"
(guión) me aparecen mal ordenados. El caso es que SQL Server ignora por
completa dicho carácter al hacer un order by. Por ejemplo, en lugar de:
A
A-CA
A-ZC
AD

Veo:
A
A-CA
AD
A-ZC

Estoy utilizando SQL Server 2003, con nivel de Intercalación
Spanish_Modern_CI_AS. He probado Con CI_AI, pero nada.
Alguien tiene alguna psta?

Gracias por vuestra ayuda.
Respuesta Responder a este mensaje
#4 javier zabaleta
13/10/2005 - 11:24 | Informe spam
Ante todo, gracias por responder.

Bueno, creo que encontré la solución. He cambiado el nombre de intercalación
de Modern_Spanish_CI_AS a SQL_Latin1_General_CP1_CI_AS y ya veo los datos
ordenados como me interesan.
El caso es que tengo un cliente con un maestro de artículos con códigos como
(simplificando): A1,A3,A4,A-2,A-5
Recientemente he migrado su base de datos de Paradox a SQL Server, y donde
antes veía: A-2, A-5, A1,A3,A4 ahora ve A1,A-2,A3,A4,A-5...
Esto le crea varios problemas, por ejemplo, al listar las ventas por
artículo, y seleccionar desde el A-1 al A-9, le aparecen también el A3,A4

Hasta ahora, utilizaba en todas las instalaciones de SQL Server la
intercalación Modern_Spanish_CI_AS, que es la que me asume por defecto. Pero
este problema me ha creado serias dudas.
¿cuál es la intercalación que instalais? ¿alguna recomendación?
Gracias a todos


"Saul Batista" escribió:

Javier,

a mi me funciona el ejemplo de Maxi, pero dime
que collation tienes en la BD ?

Saul Batista

"javier zabaleta" (donotspam)> wrote in message
news:
> Hola a todos:
>
> Tengo el siguiente problema: los datos que incorporan el carácter "-"
> (guión) me aparecen mal ordenados. El caso es que SQL Server ignora por
> completa dicho carácter al hacer un order by. Por ejemplo, en lugar de:
> A
> A-CA
> A-ZC
> AD
>
> Veo:
> A
> A-CA
> AD
> A-ZC
>
> Estoy utilizando SQL Server 2003, con nivel de Intercalación
> Spanish_Modern_CI_AS. He probado Con CI_AI, pero nada.
> Alguien tiene alguna psta?
>
> Gracias por vuestra ayuda.



Respuesta Responder a este mensaje
#5 Pedro Valle
13/10/2005 - 16:52 | Informe spam
Cordiales saludos.

Has probado con intercalación en Ingles, por lo que entiendo en Paradox por
default es ingles el ordenamiento.

Suerte.


"javier zabaleta" (donotspam)> escribió en el mensaje
news:
Ante todo, gracias por responder.

Bueno, creo que encontré la solución. He cambiado el nombre de
intercalación
de Modern_Spanish_CI_AS a SQL_Latin1_General_CP1_CI_AS y ya veo los datos
ordenados como me interesan.
El caso es que tengo un cliente con un maestro de artículos con códigos
como
(simplificando): A1,A3,A4,A-2,A-5
Recientemente he migrado su base de datos de Paradox a SQL Server, y donde
antes veía: A-2, A-5, A1,A3,A4 ahora ve A1,A-2,A3,A4,A-5...
Esto le crea varios problemas, por ejemplo, al listar las ventas por
artículo, y seleccionar desde el A-1 al A-9, le aparecen también el
A3,A4

Hasta ahora, utilizaba en todas las instalaciones de SQL Server la
intercalación Modern_Spanish_CI_AS, que es la que me asume por defecto.
Pero
este problema me ha creado serias dudas.
¿cuál es la intercalación que instalais? ¿alguna recomendación?
Gracias a todos


"Saul Batista" escribió:

Javier,

a mi me funciona el ejemplo de Maxi, pero dime
que collation tienes en la BD ?

Saul Batista

"javier zabaleta" (donotspam)> wrote in message
news:
> Hola a todos:
>
> Tengo el siguiente problema: los datos que incorporan el carácter "-"
> (guión) me aparecen mal ordenados. El caso es que SQL Server ignora por
> completa dicho carácter al hacer un order by. Por ejemplo, en lugar de:
> A
> A-CA
> A-ZC
> AD
>
> Veo:
> A
> A-CA
> AD
> A-ZC
>
> Estoy utilizando SQL Server 2003, con nivel de Intercalación
> Spanish_Modern_CI_AS. He probado Con CI_AI, pero nada.
> Alguien tiene alguna psta?
>
> Gracias por vuestra ayuda.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida