Verificar se o nome é abreviado.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
uriass
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qua, 07 Nov 2012 10:36 am

Pessoal, gostaria de saber se alguém tem alguma função que verifique se o nome da pessoa está abreviado...

por exemplo, se eu passar 'José A dos Santos' ele criticar... ou 'A Barbosa dos santos' ou 'Anderson S'

valeu! :D
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Uma possibilidade que vejo é fazer um replace dos espaços por "%" e comparar num LIKE.

Mas de qualquer forma, fica muito subjetivo essa comparação de nomes abreviados e fatalmente haverá casos que vai achar que é outro nome ou etc....
Não aconselho.
Avatar do usuário
fbifabio
Moderador
Moderador
Mensagens: 199
Registrado em: Ter, 22 Fev 2011 1:51 pm
Localização: São Paulo - SP
Contato:
Fábio Prado
www.fabioprado.net

A única forma que vejo de você realmente verificar se o nome o está abreviado é usando expressões regulares (http://www.fabioprado.net/2010/10/expre ... lares.html)

[]s

Fábio Prado
www.fabioprado.net
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Assumindo que uma abreviação consiste somente de um caracter, seria possível fazer algo como a consulta abaixo, usando o instr:

Selecionar tudo

with tabela as (select 'Teste s um dois três a' nome from dual union all select 'A da silva' from dual )
select a.nome
     , trim( substr( ' '||trim(nome)||' ', instr(' '||trim(nome)||' ', ' ', 1, l), 2 ) ) abreviacao
     , instr(' '||trim(nome)||' ', ' ', 1, l) posicao
from tabela a, (select level l from dual connect by level <= 30) -- Para garantir, substituir 30 pelo tamanho do campo com o nome
where  instr(' '||trim(nome)||' ', ' ', 1, l+1) - instr(' '||trim(nome)||' ', ' ', 1, l) = 2
order by 1, 3
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes