2009-11-26 5 views
17

Un peu rouillé sur le vieux sql.Comment puis-je déterminer si le chiffre est un nombre pair?

Pouvez-vous m'aider? Étant donné un nombre par exemple 1 ou 2 ou 4, j'ai besoin de déterminer si c'est un nombre pair ou impair et faire un certain calcul selon si pair ou impair.

Comment vous détectez que dans SQL (SQL Server 2000) merci beaucoup

+1

est là une fonction 'mod' de quelque sorte dans tsql? – Jason

+1

@ Jason: Tsql prend en charge l'opérateur modulo% – peacedog

Répondre

43

Utilisez l'opérateur de module n % 2. Il renvoie 0 si le nombre est pair et 1 si le nombre est impair.

+2

-vous faire quelque chose comme Déclarez @myNumber int set @ myNumber = 1 si Select (@ myNumber% 2) = 1 \t \t print 'même' \t \t autre \t \t print 'impair' –

+1

Oui, ou si vous voulez le faire dans un select, utilisez la construction "case ... when ... then". –

7

Vous pouvez également utiliser le serveur sql BIT opérateurs WISE

DECLARE @Int INT 

SELECT @Int = 103 

SELECT @Int & 1, @Int % 2 
+0

pour une raison quelconque je ne peux pas travailler ce que j'ai besoin de faire calculer si un nombre est pair ou impair puis diviser par 10 et obtenir le rappel seulement DECLARE @myNumber INT, @ résultat int SELECT @myNumber = 16 SELECT @myNumber & 1, 2% @myNumber si @ myNumber = 0-- même set @ result = @ x myNumber 1-- multiplier par 1 autre @ mis result = @ x myNumber 2-- multiplier par 2 - - puis diviser par 10 et --example si le résultat = 5.2 il suffit de prendre le rappel (dans ce cas 2) résultat sélectionnez –

+0

Essayez cette déclarer @myNumber int, int @ résultent ensemble @myNumber = 16 sélectionner \t \t Résultat = \t (cas lorsque @myNumber% 2 = 0 alors @myNumber * 1 * 2 @myNumber autre extrémité) 10% –

+0

DECLARE @myNumber INT, résultat @ int SELECT @myNumber = 16 SELECT @myNumber & 1, @myNumber% 2 si @ myNumber = 0-- même set @ result = @ myNumber * 1-- multiplier par 1 fixé d'autre @result = @ myNumber * 2-- multiplier par 2 select @result% 10 –

4

déclarer table @t (num int) insertion dans @t sélectionnez 1 union all select 2 union all select 3 union all select 4

select 
    num 
    ,case when num % 2 = 0 then 'Even' else 'Odd' end as Status 
from @t 

sortie:

num Statut

1 Odd 
2 Even 
3 Odd 
4 Even 

par exemple. Si le nombre est pair (multiplier par 1) ou impair (multiplication par 2) puis diviser par 10 et obtenir le reste

declare @myNumber int ,@result int 
set @myNumber = 16 
select 
    Result = 
    (case when @myNumber % 2 = 0 then @myNumber * 1 else @myNumber * 2 end) %10  

Résultat

6 

lorsque @myNumber = 11 puis

Résultat

2 

Espérons que cela aide

0

Vous pouvez vérifier le 1-bit de la valeur hexadécimale du nombre. Si ce bit est activé, alors c'est impair.

DECLARE @Int INT 

SELECT CASE WHEN @Int&0x0001<>0 THEN 'ODD' ELSE 'EVEN' END 
4

J'utilise la même chose dans MS SQL SP comme suit:

IF @current_number % 2 = 0 SET @something = 1 

- ou -

IF @current_number % 2 = 0 exec sp_whatever 
-1
USE AdventureWorks; 
GO 

SELECT BusinessEntityID, 
    CASE BusinessEntityID % 2 
    WHEN 0 THEN 'Even' ELSE 'Odd' END AS "Status" 
FROM HumanResources.Employee; 
GO 
0

Disons que pour une station de table.

Schéma:

ID NUMÉRO

CITY VARCHAR

ÉTAT VARCHAR

You can use any of the mentioned criteria to fetch the even ID. 

1. MOD() Fucntion 

select distinct CITY from STATION as st where MOD(st.id, 2) = 0 

2. % function 

select distinct CITY from STATION as st where st.id % 2 = 0 
Questions connexes