domingo, 3 de maio de 2009

Criando uma função para determinar se um número é impar

Hoje vamos criar uma função para determinar se uma função é par ou ímpar com T-SQL.

Vamos utilizar o operador %, que no Sql Server representa o mod de uma divisão. Para quem não sabe, o mod é o resto de uma divisão.

Se executarmos SELECT 4%2 vamos obter como resultado o valor 0, pois o número quatro é par. Porém, se executarmos SELECT 5%2 vamos obter 1 como resultado pois o número 5 é ímpar.

Vamos utilizar o comando CREATE FUNCTION para criar uma função escalar que retorna verdadeiro se o número passado como parâmetro é ímpar ou não.

CREATE FUNCTION odd(@VALOR INT)
RETURNS BIT
AS
BEGIN

DECLARE @Result BIT

IF @VALOR%2 = 0
SET @Result = 0
ELSE
SET @Result = 1

RETURN @Result

END


Para testar a função recém criada, podemos fazer assim:
--TESTANDO A FUNÇÃO
SELECT
DBO.ODD(1) AS [PAR OU IMPAR 1],
DBO.ODD(19) AS [PAR OU IMPAR 19],
DBO.ODD(100) AS [PAR OU IMPAR 100]

2 comentários:

  1. amigos! estou com um problema

    quero criar uma sql like function onde filtro apenas numeros pares por exemplo!

    SELECT *
    FROM news
    WHERE categoria = news.newid LIKE '%[0-2468]'

    mas ela nao funciona de jeito nenhum

    ResponderExcluir
  2. belladona, não entendi muito bem o que vc fez no script, mas acho que se vc usar o operador mod, representado pelo "%", deve funcionar:

    select * from tabela
    where campo%2 = 0

    ResponderExcluir

Leave your comment here!