Ir para conteúdo
Fórum Script Brasil
  • 0

[Resolvido]Se nome não for encontrado, pular linha


lorena1601

Pergunta

Olá, minha simples consulta ficou assim:

select PF.Cpf

from T_PESSOA_FISICA PF

inner join T_PESSOA PES ON PES.pkPessoa = PF.fkPessoa

where PES.nome = 'ANTONIO CELSO' or

PES.nome = 'JOSE CELSO' OR

PES.nome = 'TONIO CELSO'

O que eu quero é que, se não for encontrado alguns desses 3, ele salte uma linha. Exp:

Vamos supor que exista o ANTONIO CELSO E TONIO CELSO, então a pesquisa atualmente me retorna:

123464564

123145598

Eu gostaria que ficasse assim:

123464564

123145598

Tentei com char(13), mas n deu muito certo.. :(

Editado por lorena1601
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde Lorena,

você pode utilizar o CASE ao invés do OR. Desta forma, você coloca as variáveis do campo PES.nome. Caso não encontre, você retorna "" (abre e fecha aspas).

o/

Obga, só amanhã vou ver se deu certin, mas ficaria algo do tipo?

SELECT PF.Cpf

from T_PESSOA_FISICA PF

inner join T_PESSOA PES ON PES.pkPessoa = PF.fkPessoa

CASE where

PES.nome = 'ANTONIO CELSO' or

PES.nome = 'JOSE CELSO' OR

PES.nome = 'TONIO CELSO'

ELSE ''

END

Vou testar amanhã isto, essa parte dentro do where, eu vou rodar num programa pra gerar isso para mim.

Outra pergunta, esses dados(nomes) estão numa planilha de excell, vou coloca-los num programa que vai criar um bloco de notas assim:

PES.nome = 'ANTONIO CELSO' or

PES.nome = 'JOSE CELSO' or

PES.nome = 'TONIO CELSO' or

....

Tem uma maneira mais simples de escrever isto, sem ter q repetir 500 PES.nome ='nome' or

Obga mais uma vez

:)

Editado por lorena1601
Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Lorena,

Estava fazendo uns testes aqui. Dá uma olhada se assim resolve:

select PF.Cpf
from T_PESSOA_FISICA PF
right join T_PESSOA PES ON PES.pkPessoa = PF.fkPessoa

Desta forma, o resultado retornará NULL no lugar de espaço em branco.

OBS.: Se o campo for interito, não terá como colocar espaço em branco. Aí terá que tratar o NULL. Se for caracter, aí sim terá jeito de retirar o NULL e colocar espaço em branco.

A sua sintaxe de case está incorreta.

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei usando o right join, e não me trouxe espaço em branco ficou assim:

SELECT PF.NomePai

from T_PESSOA_FISICA PF

right join T_PESSOA PES ON PES.pkPessoa = PF.fkPessoa

where

PES.nome = 'ANTONIO CELSO' or

PES.nome = 'ANgfgfgfTONIO CELSO CARNEIRO' or

PES.nome = 'EDSON JOSE'

Troquei o select para não ter erro..o 1º e o 3º existem, mas o resultado foi este:

NomePai

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

JOAO CARNEIRO

GERALDO JOSE

(2 row(s) affected)

Eu peguei uma apostila de SQL pra dar uma lida, vou tentar um novo código com CASE e posto aqui.. :)

Link para o comentário
Compartilhar em outros sites

  • 0

Estava fazendo os testes deta forma:

CREATE TABLE #T_PESSOA_FISICA (id int,cpf int)
CREATE TABLE #T_PESSOA (id int,Nome VARCHAR(20))

INSERT INTO #T_PESSOA_FISICA VALUES (1, 123464564)
INSERT INTO #T_PESSOA_FISICA VALUES (3, 123145598)

INSERT INTO #T_PESSOA VALUES (1, 'ANTONIO CELSO')
INSERT INTO #T_PESSOA VALUES (2, 'JOSE CELSO')
INSERT INTO #T_PESSOA VALUES (3, 'TONIO CELSO')

select PF.Cpf
from #T_PESSOA_FISICA PF
right join #T_PESSOA PES ON PES.id = PF.id

Link para o comentário
Compartilhar em outros sites

  • 0

eu entendi o q você fez, mas o meu problema é q preciso pegar apenas os cpf's dos nomes que eu irei passar, e se n existir aquele nome, saltar uma linha..

eu instalei o mysql na minha máq e fiz o mesmo q vc, e na vdd só me retornou o resultado, não teve nenhum null..

tb tentei fazer:

select pf.cpf

from t_pessoa_fisica

pf right join t_pessoa pes on pes.id = pf.id

where pf.nome in (´ANTONIO CELSO´, ´lol´,

´TONIO CELSO´);

.---------------------.

Editado por lorena1601
Link para o comentário
Compartilhar em outros sites

  • 0

.-------------.

tó com uma dúvida, como posso retornar algo se já´estou usando o select?

pesquisei na internet e só tem exemplos muito simples

usando o case, fica assim:

select pf.cpf

from t_pessoa_fisica pf inner join t_pessoa pes

case

when pf.nome in ('ANTONIO CELSO', 'LOL', 'ANTONIO CELSO') then

'ok'

else

'null'

end

esse ok, vou pra teste, como vou retornar o cpf se já pedi pra me passar no select?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...