0

SQL Server に次のコードがあります。

declare @previouspulse int = 0
declare @previousox int = 0
declare @Pulse int = 0
declare @SpO2 int = 0

set @previouspulse = null  
set @Pulse= 121
set @previousox = 56 
set @SpO2 = null

IF @previouspulse <> @Pulse or @previousox <> @SpO2 
    select -1
else
    select -2

上記のコードから結果-2を取得しています

私の質問は次のとおりです。

シンボル<> が意味する場合、代わりnot equal toに結果を取得する必要があります-1-2

上記のコードでは、条件の1つがif条件で満たされた場合、結果-1を取得する必要があり、私の場合、シンボルが意味するtrue場合、両方の条件を取得しています'<>''Not Equal to(!=)'

'<>'シンボルが意味するのは本当に'Not Equal to(!=)'ですか???

ありがとう

4

3 に答える 3

4

その理由は次のとおりです。

@previouspulse <> @Pulse OR @previousox <> @SpO2
              NULL       OR            NULL
                        NULL

パスが 2 つしかないため、FALSE結果が になるブロックに該当します-2。値と比較する場合はまたはをNULL使用します。IS NULLIS NOT NULL

于 2013-10-25T06:57:55.407 に答える
1

NULL 値は、欠落したデータまたは不明なデータを表します。不明なデータと比較すると不明なデータになるため、=、<、または <> などの比較演算子を使用して NULL 値をテストすることはできません。

次のように ISNULL 演算子を使用して、比較から正しい結果を取得します。

declare @previouspulse int = 0
declare @previousox int = 0
declare @Pulse int = 0
declare @SpO2 int = 0

set @previouspulse = null  
set @Pulse= 121
set @previousox = 56 
set @SpO2 = null

IF isnull(@previouspulse,0) <> isnull(@Pulse,0) or isnull(@previousox,0) <> isnull(@SpO2,0)
    select -1
else
    select -2
于 2013-10-25T07:01:22.953 に答える
0

変数を比較する前に ISNULL 関数を使用できます

declare @previouspulse int = 0
declare @previousox int = 0
declare @Pulse int = 0
declare @SpO2 int = 0

set @previouspulse = null  
set @Pulse= 121
set @previousox = 56 
set @SpO2 = null

IF ISNULL(@previouspulse,0) <> @Pulse or @previousox <> ISNULL(@SpO2,0)
    select -1
else
    select -2
于 2013-10-25T06:59:56.167 に答える