separar un campo de una tabla en tres, usando sqlServer2000

Baklum
27 de Mayo del 2004
a ver, poco a poco intentare explicarme....:

Estoy trabajando con sqlserver2000.
Tengo un archivo de excel con 4 columnas (nombre, nif, direccion, telefono)

quiero importar el excel desde sqlserver a una tabla auxiliar que tiene la empresa para comparar los datos de esta con la principal. Hasta aqui todo bien. no?

La cuestion es que tiene que ser algo automatizado. Para ello he hecho un paquete local de servicio de transformacion de datos que te elimina la tabla auxiliar, la vuelve a crear y coge del excel los datos de las 4 columnas para rellenarla.

PROBLEMA:

ahora quiero de la tabla auxiar separar el campo direccion en direccion, cp, y poblacion (estan todos los campos creados, pero rellenados con NULL en las columnas de cp y poblacion), ya que en el excel aparece todo en la misma columna. Para ello creo que existen ordenes llamadas RIGHT y SUBSTRING, pero no tengo ni idea de como van...

os pongo un ejemplo de lo que hay en la columna esa para que os hagais a la idea:

DIRECCION -> FLORIDA (LA) 42 BAJO IZDA. 01005 VITORIA-GASTEIZ

lo que quiero tener es:

DIRECCION -> FLORIDA (LA) 42 BAJO IZDA.
CP -> 01005
POBLACION -> VITORIA-GASTEIZ



Osea, que tengo que separar desde la derecha, hasta el primer numero y hacerle un TRIM para quitar espacios antes y despues del nombre, y luego otra vez, desde esa posicion, hasta 5 mas adelante para quedarme con el cp.

nota: la poblacion tiene que ser hasta el primer numero, no hasta el primer espacio, porque poblaciones como "san sebastian" fastidian el planteamiento por espacios.

nota 2: el cp tambien es hasta 5 posiciones mas adelante porque hay direcciones mal metidas y coincide el numero de piso y seguido el cp sin meter espacios



pos nada, solo eso. Espero haberme explicado y que no se demore mucho la respuesta, porque me corre algo de prisa...

gracias de antemano!!

Isa?
27 de Mayo del 2004
Este ejemplo le dara una pista

DECLARE @DIRECCION VARCHAR(80)
SET @DIRECCION = 'FLORIDA (LA) 42 BAJO IZDA. 01005 VITORIA-GASTEIZ'
SELECT SUBSTRING(@DIRECCION, 1, CHARINDEX('.',@DIRECCION)-1) AS DIRECCION,
SUBSTRING(@DIRECCION,CHARINDEX('.',@DIRECCION)+2, 5) AS CODIGOPOSTAL,
SUBSTRING(@DIRECCION,CHARINDEX(' ',@DIRECCION,CHARINDEX('.',@DIRECCION)+2), 20) AS COLONIA