比較演算子(関係演算子)は、両辺の値を比較し、結果を真偽値として返す演算子で、以下の6つがある。
> (より大きい)
< (より小さい)
>= (以上)
<= (以下)
= (等しい)
/= (等しくない)
日付の比較をする場合、その形式は問わず、日付け・時刻のみが比較される。
文字列の比較をする場合、大文字、小文字の区別はされないが、considering,ignoring構文を使うことにより、比較のパターンを変えることができる。
文字列の長さで比較したい場合は、number(又はlength,count)を使い「number of 文字列」と書いて比較する。リストやレコードについても同様である。
比較するデータのサイズの上限は両辺とも32KB(32768bytes)で、それを超えるとエラー(-2721)となる。ちょっと大きなデータを扱うと遭遇するエラーなので、OSAXを使ったり、データを分割して比較するなどして回避する必要がある。
演算子 | 処理可能な値 |
---|---|
>, <, >=, <= | 日付、実数、文字列 |
両辺でクラスが違う場合、右辺のクラスが左辺に合わせて変換される。
日付は、後の時刻の方が大きいと解釈される。
文字列は、文字コードの番号に従って、頭から一文字ずつ比較する。具体的にはaよりBが、Bよりcが大きい訳だ。
演算子 | 処理可能な値 |
---|---|
=, /= | 全ての値 |
両辺のクラスが異なる場合は、値が異なると解釈され、クラス変換して比較されないので、両辺のクラスが違う場合は、きちんとas演算子を使って同じクラスに変換して比較するのが基本である。
つまり「0=0」は真(true)でも、「"0" = 0」は偽(false)となる。
幾つかのクラスは、等しいかどうかの判断が難しいので、その法則を以下に示す。
それぞれ、以下の状態のとき等しいとされる。
データ
バイト単位で完全に一致する。
リスト
リストの数が等しく、同じ位置の各項目が全て等しい。
レコード
項目の順番に関係なく、同じ数の同じラベルの項目が存在し、その内容が等しい。
参照
クラス、形式、コンテナが全て等しい場合だけ、等しいとされ、同じコンテナの参照であっても、参照形式が異なると、等しいとされない。
文字列
大文字、小文字を区別せず、同じ並びの文字列である。