Fórum Select a partir de um caracter específico #526956
27/07/2015
0
Estou precisando fazer uma manobra em um campo de uma tabela. Na tabela os dados estão da seguinte forma:
FRANCO, DANIELE CRISTINA
SILVA, IRACI DE PAIVA
Estou precisando fazer um update que tire o sobrenome do começo e jogue na frente do nome. Pesquisei e não achei nada a respeito, tentei com substring porém não deu certo.
Alguém poderia me ajudar?
Renan Lima
Curtir tópico
+ 0Posts
27/07/2015
Jair N.
Estou precisando fazer uma manobra em um campo de uma tabela. Na tabela os dados estão da seguinte forma:
FRANCO, DANIELE CRISTINA
SILVA, IRACI DE PAIVA
Estou precisando fazer um update que tire o sobrenome do começo e jogue na frente do nome. Pesquisei e não achei nada a respeito, tentei com substring porém não deu certo.
Alguém poderia me ajudar?
Gostei + 0
27/07/2015
Renan Lima
SOBRENOME, NOME
São sempre separados por vírgula e espaço.
Utilizando o SUBSTRING como ficaria, poderia me dar um exemplo?
Gostei + 0
27/07/2015
Jair N.
Segue abaixo uma função de exemplo:
-- DROP FUNCTION fncstr_invert(VARCHAR(255));
CREATE OR REPLACE FUNCTION fncstr_invert(VARCHAR(255))
RETURNS VARCHAR(255)
AS
$BODY$
SELECT array_to_string(ARRAY (SELECT SUBSTRING($1,s.i,1) FROM generate_series(LENGTH($1),1,-1) AS s(i)),'');
$BODY$
LANGUAGE SQL IMMUTABLE STRICT;
-- DROP FUNCTION fncstr_sobrenome(VARCHAR(255));
CREATE OR REPLACE FUNCTION fncstr_sobrenome(VARCHAR(255))
RETURNS VARCHAR(255)
AS
$BODY$
SELECT fncstr_invert(SUBSTRING(fncstr_invert($1), 1, STRPOS(fncstr_invert($1) || ' ',' ') -1)) || ', '
|| fncstr_invert(SUBSTRING(fncstr_invert($1), STRPOS(fncstr_invert($1) || ' ',' ') +1));
$BODY$
LANGUAGE SQL IMMUTABLE STRICT;
SELECT fncstr_sobrenome('Meu Nome Sobrenome');
Gostei + 0
27/07/2015
Renan Lima
Muito obrigado pela dica, vou tentar aqui e dou o feedback.
Gostei + 0
27/07/2015
Renan Lima
update cliente set nome = split_part(nome,',',2)||' '||split_part(nome,',',1);
Obrigado pela ajuda!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)