携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第46天,点击查看活动详情
关系运算符
- 数值关系运算符使用操作数的数值来生成布尔结果。
数值关系运算符
小于
- 小于运算符测试其左操作数是否在数值上小于右操作数。对这两个操作数进行数值计算,并返回布尔结果true(1)如果左操作数的数值小于其右操作数。如果左操作数的数值等于或大于右操作数,则CachéObjectScript将返回布尔值False(0)。
w 9 < 6,!
w 6 < 9,!
大于
- 大于运算符测试左操作数是否在数值上大于右操作数。对这两个操作数进行数值计算,如果左操作数在数值上大于右操作数,则结果为true(1)。如果左操作数在数值上等于或小于右操作数,则生成FALSE(0)结果。
w 15 > 15,!
w 14 > 15,!
大于或等于
- 组合二进制大于(>)和等于(=)运算符。如果两个运算符之一返回TRUE,则一起使用的两个运算符返回TRUE。
- 使用二进制小于(<)的一元NOT运算符(')。一起使用的两个运算符将二进制的真值反转为小于。
- 当左操作数在数值上大于或等于右操作数时,会生成TRUE(1)结果。当左操作数在数值上小于右操作数时,它会产生FALSE(0)结果。可以用以下任何一种方式表示大于或等于运算:
operand_A >= operand_B
operand_A '< operand_B
'(operand_A < operand_B)
小于或等于
- 组合二元小于(<)和等于(=)运算符。如果两个运算符之一返回TRUE,则一起使用的两个运算符返回TRUE。
- 将一元NOT运算符(')与二进制大于(>)一起使用。一起使用的两个运算符反转二进制大于的真值。
- 当左操作数在数值上小于或等于右操作数时,会生成TRUE(1)结果。当左操作数在数值上大于右操作数时,它会产生FALSE(0)结果。
operand_A <= operand_B
operand_A '> operand_B
'(operand_A > operand_B)
字符串关系运算符
- 字符串关系运算符使用操作数的字符串解释来生成布尔结果。可以在任何字符串关系运算符前面加上NOT逻辑运算符('),以获得逻辑结果的否定。
等于
- 等于运算符测试两个操作数的字符串相等。将等于应用于两个字符串时,如果两个操作数是具有相同字符序列且没有中间字符(包括空格)的相同字符串,则CachéObjectScript返回结果true(1);否则返回结果false(0)。
w "yx" = "yx",!
- 等于并不意味着任何操作数的任何数字解释。例如,即使两个操作数在数字上相同,下面的语句也会生成值FALSE(0):
w "007"="7",!
- 两个操作数都有数值,则可以使用制等于运算符来测试数值是否相等。
w 007 = 7,!
-
- IEEE双精度小数(
$DOUBLE数)与标准Caché浮点数($DECIMAL数)之间的比较是精确执行的,无需舍入。$DOUBLE和$DECIMAL数字之间的相等比较通常会产生意想不到的结果,应该避免。
- IEEE双精度小数(
w 17.1 = $double(17.1),!
w 17.1 = $decimal(17.1)
w 1.2345678901234567 = $double(1.2345678901234567),!
不等于
- 可以通过将NOT运算符与等于一起使用来指定NOT等于运算。可以用两种方式表示不等于运算:
operand '= operand
'(operand = operand)
不等于反转应用于两个操作数的二进制等于运算符的真值。如果两个操作数不相同,则结果为TRUE(1)。如果两个操作数相同,则结果为FALSE(0)。
w 1 '= 0,!
w 1 '= 1,!
包含
- 包含测试右操作数中的字符序列是否为左操作数的子字符串。如果左操作数包含右操作数表示的字符串,则结果为TRUE(1)。如果左操作数不包含右操作数表示的字符串,则结果为FALSE(0)。如果右操作数为空字符串,则结果始终为真。
w "yao xin" [ "yao",!
w "yao xin" [ "yao ",!
不包含
- 通过将NOT运算符与CONTAINS包含一起使用,可以生成以下任意等效格式的不包含操作:
operand A '[ operand B
'(operand A [ operand B)
如果操作数A不包含由操作数B表示的字符串,则不包含操作返回TRUE,如果操作数A确实包含由操作数B表示的字符串,则返回FALSE。
w "yao xin" '[ "yao",!
w "yao xin" '[ "yao ",!
跟随
跟随测试左操作数中的字符是否在ASCII排序序列中右操作数中的字符之后。遵循两个字符串的测试,每个字符串都从最左边的字符开始。测试在以下情况结束:
- 在左操作数中找到与右操作数中相应位置的字符不同的字符。
- 这两个操作数中都没有更多的字符可供比较。
如果左操作数中的第一个唯一字符的ASCII值高于右操作数中的对应字符(即,如果左操作数中的字符在ASCII排序顺序中右操作数中的字符之后),则返回值为true。如果右操作数比左操作数短,但在其他方面相同,则也返回值true。
w "YXA" ] "YX"
如果出现以下任一情况,CachéObjectScript将返回值False:
- 左操作数中第一个唯一字符的ASCII值低于右操作数中相应字符的ASCII值。
w "BLUE" ] "BOY"
- 左操作数与右操作数相同。
w "YX" ] "YX"
- 左操作数比右操作数短,但在其他方面相同。
w "Y" ] "YX"
不跟随
- 可以使用NOT运算符来生成不跟随运算,其跟随的格式为以下任一等效格式:
operand A ']operand B
'(operand A ] operand B)
w "CDE" '] "ABC"
w '("CDE" ] "ABC")
排序
在测试左操作数是否在数值下标排序规则序列中右操作数之后排序后进行排序。在数字排序序列中,空字符串首先排序,然后是按数字顺序排列的规范数字,首先是负数,然后是零和正数,最后是非数字值。
w 122 ]] 2`
w "YX " ]] "YX"
w " YX " ]] "YX"
非排序
通过将NOT运算符与排序配合使用,可以生成非排序操作,其格式为以下任一等效格式:
operand A ']] operand B
'(operand A ]] operand B)