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.

Preguntas similare

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.


Respuesta Responder a este mensaje
#2 Carlos
16/09/2005 - 20:03 | Informe spam
"Gustavo Larriera [MVP]" escribió:

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



Supongo que lo que me estás indicando es que es mejor la segunda opción que
yo planteaba.

¿Esta opción sigue siendo válida para tablas que superen el millón de
registros?

Gracias.
Respuesta Responder a este mensaje
#3 Gabriel S.
16/09/2005 - 20:03 | Informe spam
select * from tutabla
order by convert(float,numero)


"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.


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