Ayuda

08/11/2006 - 17:46 por Natacha | Informe spam
Hola a Todos

Tengo un campo Varchar (255 ) que tiene el nombre de las personas.
Necesito simular la opcion de Excel de separar texto en columnas...
para poder separar en campos cada palabra que esté separada por espacio.

Por ejemplo Campo Nombre = 'Natacha Vargas Rincon'
Necesito que quede en dos campos : Campo1 = 'Natacha'
Campo2 = 'Vargas'
Campo3 = 'Rincon'

Como podria hacerlo en SQL 2000? ...muchas gracias.
 

Leer las respuestas

#1 Alejandro Mesa
08/11/2006 - 20:13 | Informe spam
Natacha,

Puedes hacer uso de una tabla auxiliar de numeros. Este es un ejemplo
desglozado para que tengas una idea.

create table dbo.t1 (
c1 int not null identity unique,
c2 varchar(50)
)
go

create table #t (
c1 int,
c2 int,
c3 varchar(50),
rank int,
constraint pk_#t primary key (c1, c2)
)

insert into dbo.t1(c2) values('Natacha Vargas Rincon')
insert into dbo.t1(c2) values('Microsoft SQL server 2000')
insert into dbo.t1(c2) values('Microsoft SQL server 2005')
go

select
identity(int, 1, 1) as numero
into
dbo.numero
from
sysobjects
go

create unique clustered index numero_numero_u_c_ix
on dbo.numero(numero asc) with fillfactor = 100
go

insert into #t
select
a.c1,
n.numero,
substring(a.c2, n.numero, charindex(space(1), a.c2 + space(1), n.numero) -
n.numero),
null
from
dbo.t1 as a
inner join
dbo.numero as n
on substring(space(1) + a.c2, n.numero, 1) = space(1)
and n.numero <= len(a.c2)
order by a.c1, n.numero
go

update #t
set rank = (select count(*) from #t as t where t.c1 = #t.c1 and t.c2 <= #t.c2)
go

select
a.c1,
b.c2,
isnull(max(case when a.rank = 1 then a.c3 end), '') as n1,
isnull(max(case when a.rank = 2 then a.c3 end), '') as n2,
isnull(max(case when a.rank = 3 then a.c3 end), '') as n3,
isnull(max(case when a.rank = 4 then a.c3 end), '') as n4,
isnull(max(case when a.rank = 5 then a.c3 end), '') as n5
from
#t as a
inner join
dbo.t1 as b
on a.c1 = b.c1
group by
a.c1,
b.c2
go

drop table dbo.t1, dbo.numero, #t
go


AMB


"Natacha" wrote:

Hola a Todos

Tengo un campo Varchar (255 ) que tiene el nombre de las personas.
Necesito simular la opcion de Excel de separar texto en columnas...
para poder separar en campos cada palabra que esté separada por espacio.

Por ejemplo Campo Nombre = 'Natacha Vargas Rincon'
Necesito que quede en dos campos : Campo1 = 'Natacha'
Campo2 = 'Vargas'
Campo3 = 'Rincon'

Como podria hacerlo en SQL 2000? ...muchas gracias.

Preguntas similares