2009-11-26 16 views
17

古いSQLではビットが錆びます。どのようにして桁の偶数を決定できますか?

お手伝いできますか?

数字が1または2または4の場合、偶数または奇数であるかどうかを判断し、偶数または奇数に応じて計算を行う必要があります。

はどのようにSQL(SQL Server 2000の)に おかげでたくさん

+1

TSQLにおけるある種の 'mod'機能はありますか? – Jason

+1

@jasonは:TSQLあなたが のようなものが@myNumberはint型を宣言しないでください剰余演算子% – peacedog

答えて

43

は剰余演算子n % 2を使用したことを検出します。数字が偶数の場合は0を返し、奇数の場合は1を返します。

+2

をサポート セット@ myNumber = 1 他の選択(@ myNumber%2)= 'でも' 1 \t \t印刷 \t \t 場合\t \t print 'odd' –

+1

はい、またはselect内で実行したい場合は、「case ... when ... then」構文を使用します。 –

7

ます。また、SQL Serverのビット単位の演算子

DECLARE @Int INT 

SELECT @Int = 103 

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

何らかの理由で私は何をする必要があるかを計算する必要はありません。数字が偶数または奇数の場合、10で除算してリマインダのみを受け取ります DECLARE @myNumber INT、@ result int SELECT @myNumber = 16 SELECT @myNumber &1、@myNumber%2 @ myNumber = 0--場合も セット@結果= @ myNumber X 1--乗算1つの 他のセット@結果による= @ myNumber X 2--乗算2 によって - - その結果場合は10と --example割る= 5.2だけリマインダーをとる(この場合は2) 選択結果 –

+0

この を試します宣言@myNumber INT、@ \t \t検索結果を選択し= 16 セット@myNumber intをもたらす= \t(@myNumber%= 0 2次に@myNumber * 1他@myNumber * 2端ケース)10% –

+0

DECLAREの@myNumber INT、@ result int SELECT @myNumber = 16 SELECT @myNumber&1、@myNumber%2 @ myNumber = 0の場合でも の場合@@ result = @ myNumber * 1を掛ける - 1を掛ける else set @result = @ myNumber * 2 - 2を掛ける select @result%10 –

4

宣言@tテーブルを使用することができます(NUM int型) @tに挿入するすべての1つの組合を選択し、すべての2組合を選択し、すべての3組合を選ぶ4

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

出力:

NUMステータス

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

数字の16進値の1ビットを確認できます。そのビットがオンの場合、それは奇数です。

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

- または -

IF @current_number % 2 = 0 exec sp_whatever 
4

私は次のようにMS SQL SPで同じものを使用しています。

スキーマ:

ID番号

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 
-1
USE AdventureWorks; 
GO 

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

がのがテーブルSTATIONのために言ってみましょう:

DECLARE @Int INT 

SELECT CASE WHEN @Int&0x0001<>0 THEN 'ODD' ELSE 'EVEN' END 
関連する問題