Visual FoxPro 中串和值的比较
Visual FoxPro 有两个测试等式的关系操作符:等号(=)操作符和双等号(==)操作符。可以使用 = 操作符来完成同类型值之间的比较,并且它适合于比较 Character、Numeric、Date 和 Logical 类型的数据。然而,当用 = 操作符比较字符表达式时,其结果可能与所预期的不完全相同。
字符表达式的比较,是从左到右逐个字符进行的,直到两个表达式中对应的字符不相等,或直到 = 操作符右边的表达式结束(当 SET EXACT 命令设置为 OFF 时),或直到两个表达式都结束(当 SET EXACT 命令为 ON 时)。
可以使用 == 操作符来完成字符或二进制数据精确比较。如果使用 == 操作符比较两个字符或二进制表达式,== 两边的表达式必须分别包含完全相同的字符或字节,包括空格和零(0)字节,才被认为相等。当使用 == 操作符比较字符串和二进制表达式时,忽略 SET EXACT 设置。更详细的信息,请参见 关系操作符。
下表展示了选定的操作符和 SET EXACT 设置如何比较的。
注意:
一个下划线表示一个空白区。
比较
带有 SET EXACT OFF 的 =
带有 SET EXACT ON 的 =
带有 SET EXACT ON 或 OFF 的 ==
"abc" = "abc"
匹配
匹配
匹配
"ab" = "abc"
不匹配
不匹配
不匹配
"abc" = "ab"
匹配
不匹配
不匹配
"abc" = "ab_"
不匹配
不匹配
不匹配
"ab" = "ab_" 不匹配
匹配 不匹配
"ab_" = "ab" 匹配
匹配 不匹配
"" = "ab"
不匹配
不匹配
不匹配
"ab" = ""
匹配
不匹配
不匹配
"__" = ""
匹配
匹配
不匹配
"" = "___"
不匹配
匹配
不匹配
TRIM("___") = ""
匹配
匹配
匹配
"" = TRIM("___")
匹配
匹配
匹配
set exact on
s="in"+space(2)
if s="in"
if s="in"
所以,s="in__"。"in__" 和 "in"是相等的,所以,最终结果是:one