Update em um campo para alterar o nome

22/11/2013

0

Bom dia, estou com um problema e já tentei de varias formas, mas não conseguir resolver. Em uma TABELA(nome da tabela = metadatavalue) tem uma COLUNA chamada "text_value" esse campo é onde fica os nomes de autores.
Os dados neste campo estão registrados da seguinte forma: LUIZ HENRIQUE CABRAL DE OLIVEIRA
tenho que fazer um UPDATE para alterar para este formato: OLIVEIRA, LUIZ HENRIQUE CABRAL DE

Obs.: colocando o último nome na frente e acrescentando uma vírgula e incluir o restante do nome logo após.

Alguém sabe uma maneira de fazer isso no POSTGRES?
Luiz Oliveira

Luiz Oliveira

Responder

Posts

10/01/2014

Alan Mario

vc quer que o insert faça isso?
Responder

10/01/2014

Leandro Chiodini

Bom dia Luiz,

Seguinte, dependendo a linguagem que você esta trabalhando ai.
poderias fazer um programinha rapido pra fazer essa converção
bem tranquialo.
convertendo o texto em um array, fazendo um split do texto pelos espaços.

mais como você quer fazer pelo banco,
no sql seria mais ou menos assimhttp://social.msdn.microsoft.com/Forums/pt-BR/5c51aac7-61d4-4800-8407-fdbc97a71fd4/separar-nome-nome-do-meio-e-sobrenome?forum=520

Veja se te da uma luz,

att
Chiodini
Responder

17/01/2014

Anderson Abreu

Caríssimo, bom dia!

Segue uma solução, espero ajudar.

Criamos a tabela pessoa:

create table pessoa (
	nome varchar(100)
);




Realizamos o insert de três pessoas:

insert into pessoa values ('JOAO CAMPOS SANTOS'),('MARIA DA SILVA'),('PEDRO ALVAREZ CABRAL DE BRAZ');




Criamos a consulta utilizando o split_part para buscar as partes do nome, e o tamanho do nome menos o tamanho do nome retirando os espaços para compor na montagem da string como você precisa.
select nome, split_part(nome, ' ', (length(nome) - length(replace(nome,' ',''))+1) ), 
left(nome, length(nome) - length(split_part(nome, ' ', (length(nome) - length(replace(nome,' ',''))+1) ) ) ),
split_part(nome, ' ', (length(nome) - length(replace(nome,' ',''))+1) )||', '||
left(nome, length(nome) - length(split_part(nome, ' ', (length(nome) - length(replace(nome,' ',''))+1) ) ) )
from pessoa;




Atenciosamente,

Anderson Abreu

Especialista em
PostgreSQL, EnterpriseDB (Postgre Plus® Advanced Server)
Oracle, SQL Sever, MySQL, MariaDB, NoSQL, Cache, DB2, NuoDB
Bancos de Dados em alta disponibilidade
Administração de Dados
Business Intelligence
Bigdata: Cassandra, MongoDB, HBase, CouchDB, Redis
Oracle Geospatial, PostGIS
Desenvolvimento WEB
Gestão de equipes técnicas
Gestão de projetos de Missão Crítica
andersonabreu@gmail.com
anderson.abreu@tecnisys.com.br
Tecnisys
Meu Blog
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar