-- -- Nome Artefato/Programa..: sf_formata_nome.sql -- Autor(es)...............: Emerson Hermann (emersonhermann@gmail.com) -- Data Inicio ............: 07/02/2011 -- Data Atual..............: 14/02/2011 -- Versao..................: 0.01 -- Compilador/Interpretador: PostgreSql -- Sistemas Operacionais...: Linux/Windows -- SGBD....................: PostgreSql 9.x -- Kernel..................: Nao informado! -- Finalidade..............: store function para formata um nome, colocando iniciais em maiúsculas e demais em minúsculas -- OBS.....................: uso de função de agregacao array_agg funciona no PG 8.4 / 9.0, substituir por array_accum no PG anterior a essas versões . -- -- Apaga function se existir DROP FUNCTION IF EXISTS sf_formata_nome(text); CREATE OR REPLACE FUNCTION sf_formata_nome(var text) RETURNS TEXT AS $body$ SELECT array_to_string(array_agg(nomes),' ') FROM ( SELECT CASE WHEN lower(x.id_unico[i]) = 'de' THEN lower(x.id_unico[i]) WHEN lower(x.id_unico[i]) = 'dos' THEN lower(x.id_unico[i]) WHEN lower(x.id_unico[i]) = 'da' THEN lower(x.id_unico[i]) WHEN lower(x.id_unico[i]) = 'e' THEN lower(x.id_unico[i]) ELSE upper(substring(x.id_unico[i],1,1)) || lower(substring(x.id_unico[i],2)) END AS nomes FROM ( SELECT * FROM string_to_array(cast($1 AS text),' ') AS id_unico ) AS x, generate_series(1,array_upper(string_to_array(cast($1 as text),' '),1)) AS i ) AS x ; $body$ LANGUAGE 'sql'; COMMENT ON FUNCTION sf_formata_nome(text) IS 'Função que formata um nome, colocando iniciais em maiúsculas e demais em minúsculas'; SELECT sf_formata_nome('JOSE E SILVA DE LIRA DOS SANTOS');
DBA, MySql, Oracle, Postgres, SQL Server, DB2, BI, TI, Business Intelligence, Data Science, Machine Learning, IoT, Arduino
segunda-feira, 14 de fevereiro de 2011
Formatando nomes, colocando iniciais em maiúsculas e demais em minúsculas
É raro, mas, as vezes acontece de que o DBA Postgres, ter que adaptar um estrutura de nomes em uma ou mais tabelas, com iniciais em maiúsculas e demais e minúsculas, aqui segue um store function para fazer esse moido.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário