比較演算子

       

2 つのの比較を行います。

構文

result = expression1 comparisonoperator expression2

result = object1 Is object2

result = string Like pattern

比較演算子の構文は、次の指定項目から構成されます。

指定項目 内容
result 必ず指定します。任意の数値変数を指定します。
expression 必ず指定します。任意の式を指定します。
comparisonoperator 必ず指定します。任意の比較演算子を指定します。
object 必ず指定します。任意のオブジェクトへの参照を指定します。
string 必ず指定します。任意の文字列式を指定します。
pattern 必ず指定します。任意の文字列式または文字の範囲を指定します。

解説

各比較演算子の演算結果 result が、真 (True)、偽 (False)、Null となる条件を、次の表に示します。

演算子 真 (True) 偽 (False) Null 値
< (より小さい) expression1 < expression2 expression1 >= expression2 expression1 または expression2 = Null
<= (以下) expression1 <= expression2 expression1 > expression2 expression1 または expression2 = Null
> (より大きい) expression1 > expression2 expression1 <= expression2 expression1 または expression2 = Null
>= (以上) expression1 >= expression2 expression1 < expression2 expression1 または expression2 = Null
= (等しい) expression1 = expression2 expression1 <> expression2 expression1 または expression2 = Null
<> (等しくない) expression1 <> expression2 expression1 = expression2 expression1 または expression2 = Null

メモ Is 演算子と Like 演算子は、表に示されている比較演算子とは異なる特殊な比較を行います。

2 つの式を比較するとき、数値としての比較と文字列 (数字) としての比較のどちらが行われるのか、事前にはわかりにくいことがあります。2 つの式のうち、少なくとも一方がバリアント型 (Variant) 以外のデータ型である場合に適用される規則を次に示します。

条件 行われる演算
両方の式が数値データ型 (バイト型 (Byte)ブール型 (Boolean)整数型 (Integer)長整数型 (Long)単精度浮動小数点数型 (Single)倍精度浮動小数点数型 (Double)日付型(Date)通貨型(Currency)、または 10 進型(Decimal)) 数値比較
両方の式が文字列型 (String) 文字列比較
一方の式が数値データ型、他方がバリアント型 (内部処理形式は数値データ型または数値に変換できる文字列型) 数値比較
一方の式が数値データ型、他方がバリアント型 (内部処理形式は、数値に変換できない文字列型) エラー "型が一致しません。" が発生します。
一方の式が文字列型、他方がバリアント型 (Null 値を除く) 文字列比較
一方の式が Empty 値、他方が数値データ型 Empty 値の式を 0 とみなして数値比較を行います。
一方の式が Empty 値、他方が文字列型 Empty 値の式を長さ 0 の文字列 ("") とみなして文字列比較を行います。

引数 expression1expression2 が両方ともバリアント型の式の場合は、各式の内部処理形式に基づいて次のように演算が行われます。

条件 行われる演算
両方の式の内部処理形式が数値データ型 数値比較
両方の式の内部処理形式が文字列型 文字列比較
一方の式の内部処理形式が数値データ型、他方の内部処理形式が文字列型 数値データ型の式が文字列型の式より小さいという結果になります。
一方の式の内部処理形式が Empty 値、他方の内部処理形式が数値データ型 Empty 値を 0 とみなして数値比較を行います。
一方の式の内部処理形式が Empty 値、他方の内部処理形式が文字列型 Empty 値を長さ 0 の文字列 ("") とみなして文字列比較を行います。
両方の式の内部処理形式が Empty 値 2 つの式は等しいという結果になります。

単精度浮動小数点数型 (Single) の値を倍精度浮動小数点数型 (Double) の値と比較すると、倍精度浮動小数点数点型の値は単精度浮動小数点数型の値の精度に丸められます。

通貨型 (Currency) の式を、単精度浮動小数点数型または倍精度浮動小数点数型の式と比較する場合、単精度浮動小数点数型または倍精度浮動小数点数型の式は通貨型に変換されます。同様に 10 進型 (Decimal) の値を単精度浮動小数点数型または倍精度浮動小数点数型と比較すると、単精度浮動小数点数または倍精度浮動小数点数の値は、10 進型に変換されます。通貨型では、0.0001 未満の端数は切り捨てられるか、オーバーフロー エラーが発生します。同様に 10 進型では、小数点以下 28 桁 (1E-28) 未満の端数は切り捨てられるか、オーバーフロー エラーが発生します。このように端数が切り捨てられると、2 つの値が等しくない場合でも等しいとみなされることがあります。