SET EXACT コマンド
長さが異なる 2 つの文字列を比較する規則を指定します。
構文
SET EXACT ON | OFF
引数
ON
式が文字と等しい文字に一致する必要があることを指定します。 式の末尾の空白は、比較では無視されます。 比較のために、2 つの式の短い方は、長い式の長さに合わせて空白で右側に埋め込まれます。
OFF
(既定値)。式を等価にするには、右側の式の末尾に達するまで、式が character の文字と一致する必要があることを指定します。
注釈
両方の文字列が同じ長さである場合、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("___") | 一致する | 一致する | 一致する |