Ordenación campos char

16/09/2005 - 17:47 por Carlos | Informe spam
Tengo una tabla con datos de dirección:
...,
calle (varchar),
numero (char),

Para que las consultas salgan ordenadas por dirección estoy evaluando dos
posibilidades:

1º- Crear el campo numero de tipo char y hacer que cada inserción o
modificación en la tabla se dispare una función que justifique el campo
numero a la derecha:
' 1',' 2',...,' 10',' 11

2º- Crear el campo número como varchar y en cada SELECT añadir en ORDER la
función que devuelva el campo número justificado a la derecha.

No sé que problemas puedo encontrar con cada una de las opciones conforme la
tabla vaya creciendo.
Tampoco sé si con SQL SERVER 2005 este problema puede tratarse de otra forma.

Sabes de alguna solución mejor.
Gracias.
 

Leer las respuestas

#1 Gustavo Larriera [MVP]
16/09/2005 - 18:08 | Informe spam
use tempdb
go

create table t (calle varchar(20), numero char(5))
go

insert t values ('calle A', '1')
insert t values ('calle A', '15')
insert t values ('calle A', ' 12')
go

select * from t order by calle, convert(int, numero)


Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Carlos" wrote in message
news:
Tengo una tabla con datos de dirección:
...,
calle (varchar),
numero (char),

Para que las consultas salgan ordenadas por dirección estoy evaluando dos
posibilidades:

1º- Crear el campo numero de tipo char y hacer que cada inserción o
modificación en la tabla se dispare una función que justifique el campo
numero a la derecha:
' 1',' 2',...,' 10',' 11

2º- Crear el campo número como varchar y en cada SELECT añadir en ORDER la
función que devuelva el campo número justificado a la derecha.

No sé que problemas puedo encontrar con cada una de las opciones conforme
la
tabla vaya creciendo.
Tampoco sé si con SQL SERVER 2005 este problema puede tratarse de otra
forma.

Sabes de alguna solución mejor.
Gracias.


Preguntas similares