Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Motta

Abreviar nomes

Recommended Posts

Alguém tem alguma function para abreviar nomes em pl/sql ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preciso abreviar nomes de pessoas para que caibam num tamanho máximo.

 

Impressão de cartão por exemplo :

 

Epaminondas Santos do Couto Sampaio Ignacio da Silva - 52 posições

 

Epaminondas S C Ignacio Silva - 20 posições

 

Tenho uma em Delphi , nosso BD é em Linux , no Windows dá para uma dll com uma função exerna mas essa teria de ser em C, não poderia ser em Delphi, no Linux nem a dll, não ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummmmmmm.... entendi.

 

Eu não tenho nenhuma desse jeito, porém, deve ser fácil criar uma em PL/SQL e você elimina as que você usa em DELPHI e WINDOWS.

 

Usando uma única em PL/SQL você consegue integrar todos os ambientes.. ficará mais fácil para você.

 

Se quizer tentar criar, eu posso te auxiliar pelo fórum, acho legal a idéia dessa função.

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que estou sem tempo ...

 

Minha function delphi está em

 

http://forum.devmedia.com.br/viewtopic.php...e84f701a6cbcdc9

 

Se alguém quiser traduzir (tendo tempo e saco) :rolleyes: http://forum.imasters.com.br/public/style_emoticons/default/sick.gif :unsure: :wacko: http://forum.imasters.com.br/public/style_emoticons/default/joia.gif :( http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

--Função desenvolvida para banco de dados ORACLE.create or replace function fabrev_nome( pnome in varchar2) return varchar2is --Analista: Marcelo Henrique Ladeia ( Açúcar Guarani S/A ) vInicio number; vNome Varchar2(200); vRet Varchar2(150); bContinua Boolean;begin vRet := ''; vInicio := 1; vNome := pNome; bContinua := true; while bContinua = true loop if vInicio = 1 then vRet := substr(vNome,1,instr(vNome,' ',vInicio)-1); end if; vInicio := instr(vNome,' ',vInicio)+1; if instr(vNome,' ',vInicio) <= 0 then vRet := vRet|| ' ' ||substr(vNome,vInicio); bContinua := false; else vRet := vRet|| ' ' ||substr(vNome,vInicio,1); end if; end loop; return TRIM(vRet); exception when others then raise_application_error(-20000,'Função fabrev_nome: ' || SQLERRM); end fabrev_nome;/show errors function fabrev_nome;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grandeee Motta!!!Rapaz, fiz um select que deve resolver o seu problema...

SELECT SubStr(nome, 1, INSTR(UPPER(NOME), ' ')) || REVERSE(Trim(SubStr(REVERSE(nome), 1, INSTR(UPPER(REVERSE(NOME)), ' '))))FROM teste;

Onde tiver o campo NOME no select você modifica para o campo que desejar e muda o nome da tabela tb...Fiz de acordo com oq estás precisandoEx.:O nome DANIEL CAETANO RODRIGUES ficará DANIEL RODRIGUESCriei uma função também...

CREATE OR REPLACE FUNCTION abrevia_nome (pValue IN VARCHAR2) RETURN VARCHAR2 ISnome VARCHAR2(100);Saida VARCHAR2(2000);BEGIN nome := pValue; SELECT SubStr(nome, 1, INSTR(UPPER(NOME), ' ')) || REVERSE(Trim(SubStr(REVERSE(nome), 1, INSTR(UPPER(REVERSE(NOME)), ' ')))) INTO saida FROM dual; RETURN Saida;END; -- Funcao abrevia_nome/

Espero que ajude!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.