none
Dúvida em relação ao IF. RRS feed

  • Pergunta

  • Bom dia galera,

    Eu tenho uma dúvida em relação ao IF do SQL SERVER. Eu tenho na tabela com os campos do tipo (VARCHAR) com a relação de comparar dois campos de uma tabela. Será que consigo utilizar o IF para o uso do VARCHAR. Ou serve apenas para o tipo de campo Booleano?

    quarta-feira, 20 de julho de 2016 12:25

Respostas

  • Milton,

    Você pode fazer essa comparação com IF sim.

    Também pode usar o CASE.

    Veja um exemplo:

    create table tabela1
    (
    id int,
    valor1 varchar(20),
    valor2 varchar(20)
    );
    
    insert into tabela1
    values 
    (1,'aaa','aaa'),
    (2,'ccc','ddd');
    
    select 
    *,
    case
    	when valor1 = valor2 then 1 else 0
    end Iguais
    from tabela1
    
    declare @val1 varchar(20)
    declare @val2 varchar(20)
    
    
    select @val1 = valor1, @val2 = valor2
    from tabela1
    where id = 1
    
    if @val1 = @val2 
    	select @val1 valor1, @val2 valor2, 1 Iguais
    else
    	select @val1 valor1, @val2 valor2, 0 Iguais
    
    drop table tabela1


    • Editado Rafael Juca quarta-feira, 20 de julho de 2016 13:01
    • Marcado como Resposta Milton Honji quarta-feira, 20 de julho de 2016 14:07
    quarta-feira, 20 de julho de 2016 12:58
  • Milton,

    Até a versão 2008 R2 não era possível utilizar o comando IF dentro de um comando Select, neste caso para realizar comparações era necessário fazer uso do comando Case.

    A partir da versão 2012 a Microsoft adicionou o comando IIF o mesmo existente no Visual Studio, através dele você tem a possibilidade de fazer este tipo de análise dentro do Select, sendo assim:

    - Para comparar valores ou condições fora do Select utilize o IF;

    - Para comparar valores ou condições dentro de um Select use o Case ou IIF.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Milton Honji quarta-feira, 20 de julho de 2016 14:07
    quarta-feira, 20 de julho de 2016 13:19

Todas as Respostas

  • Bom dia Milton.

    Você deseja verificar se os valores das duas colunas são iguais? É isso?

    Não entendi muito bem.

    Obrigado.

    quarta-feira, 20 de julho de 2016 12:39
  • Bom dia Rafael,

    Desculpe por não ter explicado direito.

    isso que eu desejo se são iguais e se ela também aceita fazer comparações do tipo (VARCHAR).

    quarta-feira, 20 de julho de 2016 12:44
  • Milton,

    Você pode fazer essa comparação com IF sim.

    Também pode usar o CASE.

    Veja um exemplo:

    create table tabela1
    (
    id int,
    valor1 varchar(20),
    valor2 varchar(20)
    );
    
    insert into tabela1
    values 
    (1,'aaa','aaa'),
    (2,'ccc','ddd');
    
    select 
    *,
    case
    	when valor1 = valor2 then 1 else 0
    end Iguais
    from tabela1
    
    declare @val1 varchar(20)
    declare @val2 varchar(20)
    
    
    select @val1 = valor1, @val2 = valor2
    from tabela1
    where id = 1
    
    if @val1 = @val2 
    	select @val1 valor1, @val2 valor2, 1 Iguais
    else
    	select @val1 valor1, @val2 valor2, 0 Iguais
    
    drop table tabela1


    • Editado Rafael Juca quarta-feira, 20 de julho de 2016 13:01
    • Marcado como Resposta Milton Honji quarta-feira, 20 de julho de 2016 14:07
    quarta-feira, 20 de julho de 2016 12:58
  • Milton,

    Até a versão 2008 R2 não era possível utilizar o comando IF dentro de um comando Select, neste caso para realizar comparações era necessário fazer uso do comando Case.

    A partir da versão 2012 a Microsoft adicionou o comando IIF o mesmo existente no Visual Studio, através dele você tem a possibilidade de fazer este tipo de análise dentro do Select, sendo assim:

    - Para comparar valores ou condições fora do Select utilize o IF;

    - Para comparar valores ou condições dentro de um Select use o Case ou IIF.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Milton Honji quarta-feira, 20 de julho de 2016 14:07
    quarta-feira, 20 de julho de 2016 13:19
  • Junior Bom dia,

    Muito obrigado pela dica sobre que usar no SQL SERVER.

    quarta-feira, 20 de julho de 2016 13:56
  • Rafael,

    Muito obrigado, consegui resolver, no meu caso tive que usar o CASE, pois a versão que utilizo aqui é MSSQL 2000, mas deu tudo certo.

    quarta-feira, 20 de julho de 2016 13:58
  • De nada Milton.

    Se possível marque as respostas que te ajudaram.

    Obrigado!

    quarta-feira, 20 de julho de 2016 14:03
  • Por nada..

    quarta-feira, 20 de julho de 2016 14:08