2009-11-26 8 views
17

Etwas rostig auf dem alten sql.Wie kann ich feststellen, ist die Zahl gerade?

Können Sie helfen?

Bei einer Zahl zB 1 oder 2 oder 4 muss ich feststellen, ob es gerade oder ungerade ist und eine Berechnung je nachdem ob gerade oder ungerade.

Wie erkennen Sie, dass in SQL (SQL Server 2000) Dank viel

+1

gibt es eine 'mod' Funktion irgendeiner Art in Tsql? – Jason

+1

@ Jason: Tsql unterstützt den Modulo-Operator% – peacedog

Antwort

43

Verwendung der Modulo-Operator n % 2. Es gibt 0 zurück, wenn die Zahl gerade ist, und 1, wenn die Zahl ungerade ist.

+2

Haben Sie etwas tun, wie Deklarieren @myNumber int Satz @ myNumber = 1 wenn Select (@ myNumber% 2) = 1 \t \t print 'sogar' \t \t sonst \t \t print 'odd' –

+1

Ja, oder wenn Sie es in einem select machen wollen, verwenden Sie das Konstrukt "case ... when ... then". –

7

Sie auch SQL Server bitweise Operatoren

DECLARE @Int INT 

SELECT @Int = 103 

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

aus irgendeinem Grund kann ich nicht arbeiten, was ich tun muss berechnen, wenn eine Zahl gerade oder ungerade ist dann dividieren durch 10 und erhalten nur die Erinnerung DECLARE @myNumber INT, @ Ergebnis int SELECT @myNumber = 16 SELECT @myNumber & 1, @myNumber% 2 wenn @ myNumber = 0-- auch Satz @ result = @ myNumber x 1-- multiplizieren mit 1 anders gesetzt @ result = @ myNumber x 2-- mit 2 multiplizieren - - dann teilt durch 10 und --example wenn Ergebnis = 5,2 nur die Erinnerung nehmen (in diesem Fall 2) wählt Ergebnis –

+0

diesen Versuchen deklarieren @myNumber int, @ führen int Satz @myNumber = 16 \t \t Ergebnis wählen = \t (Fall, wenn @myNumber% 2 = 0, dann @myNumber * 1 sonst @myNumber * 2 Ende)% 10 –

+0

DECLARE @myNumber INT, @ Ergebnis int @myNumber SELECT = 16 SELECT @myNumber & 1, @myNumber% 2 wenn @ myNumber = 0-- auch Satz @ result = @ myNumber * 1-- multiplizieren mit 1 anders gesetzt @result = @ myNumber * 2-- multiplizieren mit 2 Wählen Sie @result% 10 –

4

declare @t Tabelle (num int) Einsatz in @t 1 wählen Vereinigung alle auswählen 2 union all wählen 3 union all wählen 4

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

Ausgang:

num Der Status

1 Odd 
2 Even 
3 Odd 
4 Even 

z.B. Wenn die Anzahl gerade ist (multipliziert mit 1) oder ungerade (multipliziert mit 2) dividieren dann durch 10 und erhalten den Rest

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

Ergebnis

6 

wenn @myNumber = 11 dann

Ergebnis

2 

Hoffe, das hilft

0

Sie könnten das 1-Bit des Hexadezimalwerts der Zahl überprüfen. Wenn dieses Bit eingeschaltet ist, ist es ungerade.

DECLARE @Int INT 

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

Ich benutze die gleiche Sache in MS SQL SP wie folgt:

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

- oder -

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

Lassen Sie uns für einen Tisch STATION sagen.

Schema:

ID NUMBER

CITY VARCHAR

STATE 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 
Verwandte Themen