Jump to content
Fórum Script Brasil
  • 0

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


lorena1601

Question

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.. :(

Edited by lorena1601
Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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

:)

Edited by lorena1601
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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´);

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

Edited by lorena1601
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...