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 の文字列 ("") とみなして文字列比較を行う。 |
引数 expression1 と expression2 が両方ともバリアント型の式の場合は、各式の内部処理形式に基づいて次のように演算が行われる。
条件 | 行われる演算 |
両方の式の内部処理形式が数値データ型 | 数値比較 |
両方の式の内部処理形式が文字列型 | 文字列比較 |
一方の式の内部処理形式が数値データ型、他方の内部処理形式が文字列型 | 数値データ型の式が文字列型の式より小さいという結果になる。 |
一方の式の内部処理形式が Empty 値、他方の内部処理形式が数値データ型 | Empty 値を 0 とみなして数値比較を行う。 |
一方の式の内部処理形式が Empty 値、他方の内部処理形式が文字列型 | Empty 値を長さ 0 の文字列 ("") とみなして文字列比較を行う。 |
両方の式の内部処理形式が Empty 値 | 2 つの式は等しいという結果になる。 |
単精度浮動小数点数型 (Single) の値を倍精度浮動小数点数型 (Double) の値と比較すると、倍精度浮動小数点数点型の値は単精度浮動小数点数型の値の精度に丸められる。
通貨型 (Currency) の式を、単精度浮動小数点数型または倍精度浮動小数点数型の式と比較する場合、単精度浮動小数点数型または倍精度浮動小数点数型の式は通貨型に変換される。同様に 10 進型 (Decimal) の値を単精度浮動小数点数型または倍精度浮動小数点数型と比較すると、単精度浮動小数点数または倍精度浮動小数点数の値は、10 進型に変換される。通貨型では、0.0001 未満の端数は切り捨てられるか、オーバーフロー エラーが発生する。同様に 10 進型では、小数点以下 28 桁 (1E-28) 未満の端数は切り捨てられるか、オーバーフロー エラーが発生する。このように端数が切り捨てられると、2 つの値が等しくない場合でも等しいとみなされることがある。