SET EXACT 命令
指定用于比较两个不同长度的字符串的规则。
语法
SET EXACT ON | OFF
参数
ON
指定表达式必须匹配字符才能等效的字符。 对于比较,将忽略表达式中的任何尾随空白。 为了进行比较,两个表达式中较短的在右侧填充空格,以匹配较长表达式的长度。
OFF
(Default.) 指定表达式必须匹配字符的字符,直到到达右侧表达式的末尾,才能等效。
注解
如果两个字符串的长度相同,SET EXACT 设置不起作用。
字符串比较
Visual FoxPro 有两个用于测试相等性的关系运算符。
= 运算符在相同类型的两个值之间执行比较。 此运算符适用于比较字符、数字、日期和逻辑数据。
但是,将字符表达式与 = 运算符进行比较时,结果可能不完全符合预期。 字符表达式是字符从左到右比较字符,直到其中一个表达式不等于另一个表达式,直到到达 = 运算符右侧的表达式的末尾 (SET EXACT OFF) ,或直到两个表达式的末尾到达 (SET EXACT ON) 。
当需要对字符数据进行精确比较时,可以使用 == 运算符。 如果将两个字符表达式与 == 运算符进行比较,则 == 运算符两侧的表达式必须包含完全相同的字符(包括空格),才能被视为相等。 使用 ==比较字符串时,将忽略 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 (“___”) | 匹配 | 匹配 | 匹配 |