Assuming your data structure is something like:
CREATE TABLE tb_usuario
(
id INTEGER PRIMARY KEY,
nome_completo TEXT,
nome TEXT,
sobrenome TEXT
);
Test Data:
-- DADOS PARA TESTE
INSERT INTO tb_usuario ( id, nome_completo ) VALUES ( 1, 'Rodrigo Barreto Silva' );
INSERT INTO tb_usuario ( id, nome_completo ) VALUES ( 2, 'Dino da Silva Sauro' );
INSERT INTO tb_usuario ( id, nome_completo ) VALUES ( 3, 'Bond James Bond' );
INSERT INTO tb_usuario ( id, nome_completo ) VALUES ( 4, 'Raimundo Nonato Santos' );
You can use a UPDATE
with no WHERE
clause using the combined substr()
and split_part()
functions to solve your problem:
-- ATUALIZANDO TABELA
UPDATE
tb_usuario
SET
nome = split_part( nome_completo, ' ', 1 ),
sobrenome = substr( nome_completo, length(split_part( nome_completo, ' ', 1 ) ) + 2 );
Queried updated data:
-- TABELA ATUALIZADA
SELECT
nome_completo,
nome,
sobrenome
FROM
tb_usuario;
Output:
| nome_completo | nome | sobrenome |
|------------------------|----------|----------------|
| Rodrigo Barreto Silva | Rodrigo | Barreto Silva |
| Dino da Silva Sauro | Dino | da Silva Sauro |
| Bond James Bond | Bond | James Bond |
| Raimundo Nonato Santos | Raimundo | Nonato Santos |
SQLFiddle: link