2009-11-26 10 views
17

पुरानी एसक्यूएल पर बिट जंगली।मैं कैसे निर्धारित कर सकता हूं अंक भी संख्या है?

क्या आप मदद कर सकते हैं?

किसी संख्या को देखते हुए उदाहरण 1 या 2 या 4 मुझे यह निर्धारित करने की आवश्यकता है कि यह भी या विषम संख्या है और कुछ गणना पर निर्भर करता है या नहीं।

कैसे आप बहुत बहुत शुक्रिया

+1

वहाँ एक 'TSQL में किसी प्रकार की mod' समारोह है? – Jason

+1

@jason: TSQL आप की तरह कुछ घोषित करते है @myNumber int सापेक्ष ऑपरेटर% – peacedog

उत्तर

43

उपयोग मापांक ऑपरेटर n % 2 पता नहीं लगा पाते कि एसक्यूएल (SQL सर्वर 2000) में। यदि संख्या भी है, तो यह 0 लौटाता है, और 1 यदि संख्या विषम है।

+2

का समर्थन करता है सेट @ myNumber = 1 अगर चयन (@ myNumber% 2) = 1 \t \t प्रिंट 'भी' \t बाकी \t \t \t प्रिंट 'odd' –

+1

हाँ, या यदि आप इसे किसी चयन के अंदर करना चाहते हैं, तो "केस ... कब ... फिर" निर्माण करें। –

2

modulus operator (%) का उपयोग करें।

x % 2 

आपको बताएगा कि एक्स भी अजीब है या नहीं।

7

तुम भी एसक्यूएल सर्वर बीआईटी वार ऑपरेटरों

DECLARE @Int INT 

SELECT @Int = 103 

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

किसी कारण से मुझे काम करने की ज़रूरत नहीं है, मुझे गणना करने की आवश्यकता है यदि कोई संख्या 10 या उससे भी कम हो तो अनुस्मारक प्राप्त करें और केवल DECLARE @myNumber INT, @ परिणाम int चुनें @myNumber = 16 SELECT @myNumber और 1, @myNumber% 2 यदि @ myNumber = 0-- भी सेट @ परिणाम = @ myNumber एक्स 1-- 1 बाकी सेट @ परिणाम से गुणा = @ myNumber एक्स 2-- 2 से गुणा - - तो 10 और --example से विभाजित करता है, तो परिणाम = 5.2 बस अनुस्मारक चयन परिणाम लेने के (2 इस मामले में) –

+0

इस प्रयास करें घोषित @myNumber पूर्णांक, @ परिणाम पूर्णांक सेट @myNumber = 16 चयन \t \t परिणाम = \t (मामला है जब @myNumber% 2 = 0 तो @myNumber * 1 बाकी @myNumber * 2 अंत) 10% से –

+0

घोषित @myNumber iNT, @ परिणाम पूर्णांक चयन @myNumber = 16 चयन @myNumber और 1, @myNumber% 2 यदि @ myNumber = 0-- भी सेट @ परिणाम = @ myNumber * 1-- से गुणा 1 बाकी @result सेट = @ myNumber * 2 - 2 से गुणा करें @result% 10 का चयन करें –

4

घोषित @t तालिका (संख्या पूर्णांक) में डालने का उपयोग कर सकते @t 1 संघ सभी का चयन करें 2 संघ का चयन सभी का चयन 3 संघ सभी का चयन 4

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

आउटपुट:

संख्या स्थिति

1 Odd 
2 Even 
3 Odd 
4 Even 

उदा। संख्या भी (गुणा 1) के द्वारा या विषम (गुणा 2 से) है तो 10 से विभाजित और शेष

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

परिणाम

6 

जब @myNumber = 11 तो

मिल परिणाम

2 

उम्मीद है कि यह

0

मदद करता है आप संख्या के हेक्स मान के 1-बिट की जांच कर सकते हैं। अगर वह बिट चालू है, तो यह अजीब है।

DECLARE @Int INT 

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

मैं इस प्रकार में एमएस एसक्यूएल सपा एक ही बात का उपयोग कर रहा:

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

- या -

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

की एक मेज STATION के लिए करते हैं।

स्कीमा:

आईडी नंबर

शहर VARCHAR

राज्य 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 
संबंधित मुद्दे

 संबंधित मुद्दे