長さが異なる 2 つの文字列を比較するための規則を指定します。
構文
SET EXACT ON | OFF
論争
オン
式が文字と等しい文字に一致する必要があることを指定します。 式の末尾の空白は、比較では無視されます。 比較のために、2 つの式の短い方は、長い式の長さに一致するように、右側に空白が埋め込まれます。
オフ
(既定値)。等価であるためには、右側の式の末尾に達するまで、式が文字の文字と一致する必要があることを指定します。
注釈
両方の文字列の長さが同じ場合、SET EXACT 設定は無効です。
文字列の比較
Visual FoxPro には、等価性をテストする 2 つの関係演算子があります。
= 演算子は、同じ型の 2 つの値の比較を実行します。 この演算子は、文字、数値、日付、および論理データの比較に適しています。
ただし、文字式を = 演算子と比較すると、結果が期待どおりではない可能性があります。 文字式は、左から右の文字の文字と比較され、式の 1 つが他方と等しくないか、= 演算子の右側の式の末尾に達するまで (SET EXACT OFF)、または両方の式の末尾に到達するまで (SET EXACT ON) になります。
== 演算子は、文字データの正確な比較が必要な場合に使用できます。 2 つの文字式が == 演算子と比較される場合、== 演算子の両側の式には、等しいと見なされるためには、空白を含め、まったく同じ文字が含まれている必要があります。 == を使用して文字列を比較する場合、SET EXACT 設定は無視されます。
次の表は、演算子の選択と SET EXACT 設定が比較にどのように影響するかを示しています。 (アンダースコアは空白を表します)。
| 比較 | = EXACT OFF | = EXACT ON | == EXACT ON または OFF |
|---|---|---|---|
| "abc" = "abc" | 試合 | 試合 | 試合 |
| "ab" = "abc" | 一致なし | 一致なし | 一致なし |
| "abc" = "ab" | 試合 | 一致なし | 一致なし |
| "abc" = "ab_" | 一致なし | 一致なし | 一致なし |
| "ab" = "ab_" | 一致なし | 試合 | 一致なし |
| "ab_" = "ab" | 試合 | 試合 | 一致なし |
| "" = "ab" | 一致なし | 一致なし | 一致なし |
| "ab" = "" | 試合 | 一致なし | 一致なし |
| "__" = "" | 試合 | 試合 | 一致なし |
| "" = "___" | 一致なし | 試合 | 一致なし |
| TRIM("___") = "" | 試合 | 試合 | 試合 |
| "" = TRIM("___") | 試合 | 試合 | 試合 |