BETWEEN( ) 函数
返回可表明指定值是否在某范围内的逻辑值。
语法
BETWEEN(值,最小值,最大值)
参数
名称 | 类型 | 描述 |
---|---|---|
值 |
字符 数值 日期时间 |
要测试的域、表达式或字面量值。 |
最小 |
字符 数值 日期时间 |
范围内的最小值。 |
最大 |
字符 数值 日期时间 |
范围内的最大值。 |
输出
逻辑。如果值大于等于最小值且小于等于最大值,则返回 T(真)。否则,返回 F(假)。
示例
基本示例
数值输入
返回 T:
BETWEEN(500,400,700)
返回 F:
BETWEEN(100,400,700)
字符输入
返回 T:
BETWEEN("B","A","C")
返回 F,因为字符比较区分大小写,而且小写字母 "b" 并非介于 "A" 和 "C" 之间:
BETWEEN("b","A","C")
日期时间输入
返回 T:
BETWEEN(`141230`,`141229`,`141231`)
对于登录时间域中所有从 07:00:00 AM 到 09:00:00 AM(包括两者)的值,返回 T;否则,返回 F:
BETWEEN(登录时间,`t070000`,`t090000`)
SET EXACT 行为
对于姓氏域中所有以从 "C" 到 "K" 的字母(包括两者)开头的值,返回 T;否则,返回 F(SET EXACT 必须为 OFF):
BETWEEN(姓氏, "C", "K")
对于姓氏域中所有以从 "C" 到 "J" 的字母(包括两者)开头的值,返回 T;否则,返回 F(SET EXACT 必须为 ON)。对于单个字母 "K",也返回 T。
BETWEEN(姓氏, "C", "K")
域输入
对于发票日期域中从 2014 年 9 月 30 日到 2014 年 10 月 30 日的所有值(包括这两个值在内),返回 T;否则,返回 F:
BETWEEN(发票日期, `20140930`, `20141030`)
对于发票日期不属于采购订单日期和付款日期(包括这两个日期在内)之间的所有记录,返回 T;否则,返回 F:
NOT BETWEEN(发票日期, 采购订单日期, 付款日期)
对于发票金额域中从 $1000 到 $5000 的所有值(包括这两个值在内),返回 T;否则,返回 F:
BETWEEN(发票金额, 1000, 5000)
高级示例
创建过滤器以查看薪水范围
以下示例打开员工列表样例表并应用一个过滤器,以将显示的记录限制为仅包括薪水大于或等于 $40,000.00 且小于或等于 $50,000.00 的员工。
OPEN 员工列表 SET FILTER TO BETWEEN(薪水, 40000.00, 50000.00)
备注
支持的数据类型
BETWEEN( ) 函数的输入可以是数值、字符或日期时间数据。您不能混用数据类型。所有三个输入必须属于相同的数据类别。
请使用 BETWEEN( ) 而不是 AND 运算符
您可以使用 BETWEEN( ) 函数来替代使用 AND 运算符的表达式。
例如:
BETWEEN(发票金额, 1000, 5000)
等效于
发票金额 >= 1000 AND 发票金额 <= 5000
最小值和最大值的顺序
BETWEEN( ) 函数中的最小值和最大值的顺序无所谓,因为 Analytics 自动识别哪个值为最小值以及哪个值为最大值。
下面的两个示例都返回 T:
BETWEEN(2500, 1000, 5000)
BETWEEN(2500, 5000, 1000)
数值输入的小数精度
当要比较的数值输入具有不同的小数精度时,比较运算将使用较高水平的精度。
返回 T,因为 1.23 等于 1.23:
BETWEEN(1.23, 1.23, 1.25)
返回 F,因为一旦考虑第三个小数位,则 1.23 小于 1.234:
BETWEEN(1.23, 1.234, 1.25)
字符数据
区分大小写
在与字符数据共同使用时,BETWEEN( ) 函数区分大小写。当它比较字符时,"a" 不等于 "A"。
返回 F:
BETWEEN("B","a","C")
如果您使用大小写不一致的数据,则在使用 BETWEEN( ) 之前,可使用 UPPER( ) 函数将值转换为大小写一致的形式。
返回 T:
BETWEEN(UPPER("B"), UPPER("a"), UPPER("C"))
部分匹配
对于字符比较,支持不完全匹配。
值可被最小值包含。
返回 T,即使值 "AB" 似乎小于最小值 "ABC":
BETWEEN("AB", "ABC", "Z")
最大值可被值包含。
返回 T,即使值 "ZZ" 似乎大于最大值 "Z":
BETWEEN("ZZ", "ABC", "Z")
说明
字符串比较中的较短值必须出现在较长值的开头才能形成匹配。
部分匹配和 SET EXACT
当 SET EXACT = OFF(这是 Analytics 默认设置)时,部分匹配被启用。如果 SET EXACT = ON,不完全匹配被禁用,比较值必须完全匹配才能构成匹配。
当 SET EXACT 为 ON 时,上述两个示例都为假。
有关 SET EXACT(精确字符比较选项)的更多信息,请参见 SET 命令。
打开或关闭 SET EXACT
如果您想要确保精确字符比较选项不与 BETWEEN( ) 函数共同使用,请在选项对话框( )中的表选项卡中检查是否已取消选择该选项。
如果您使用脚本,您可以在 BETWEEN( ) 函数出现之前添加 SET EXACT OFF 命令。如果需要,您可以使用 SET EXACT ON 命令恢复之前的状态。
日期时间参数
被指定为函数输入的日期、日期时间或时间域都可以使用任何日期、日期时间或时间格式,前提是域定义正确定义了该格式。
混用日期、日期时间和时间输入
您可以在 BETWEEN( ) 函数的三个输入中混用日期、日期时间和时间值,但混用这些日期时间子类型可能得到无意义的结果。
Analytics 使用序列号等效值来处理日期时间计算,因此,即使您只对日期时间值的日期部分感兴趣,时间部分仍然构成计算的一部分。
请看下面的示例:
返回 T,因为 2014 年 12 月 31 日落入由最小值和最大值指定的范围:
BETWEEN(`20141231`,`20141229`,`20141231`)
返回 F,即使 2014 年 12 月 31 日 12:00 PM 似乎落入由最小值和最大值指定的范围:
BETWEEN(`20141231 120000`,`20141229`,`20141231`)
如果我们考察这两个表达式的序列号等效值,我们可以明白为什么第二个表达式的结果为假。
返回 T,因为序列号值等于序列号最大值:
BETWEEN(42003.000000, 42001.000000, 42003.000000)
返回 F,因为序列号值大于序列号最大值:
BETWEEN(42003.500000, 42001.000000, 42003.000000)
序列号 42003.500000 大于 42003.000000,因此它超出范围,即使这两个日期完全相同。0.500000 是等于 12:00 PM 的序列号。
协调日期时间子类型
要避免混用日期时间子类型可能导致的问题,您可以使用函数协调子类型。
例如,以下表达式使用与上面的第二个示例相同的初始值,但返回 T 而非 F:
BETWEEN(CTOD(DATE(`20141231 120000`,"YYYYMMDD"),"YYYYMMDD"),`20141229`,`20141231`)
指定字面量日期、日期时间或时间值
在为任何函数输入指定字面量日期、日期时间或时间值时,您必须使用下表中的格式,并且必须将值放在反引号中 — 例如,`20141231`。
在日期或时间的各个部分之间,不要使用任何分隔符,如斜杠 (/) 或冒号 (:)。
-
日期时间值 - 您可以使用日期、分隔符和下表列出的时间格式的任意组合。日期必须位于时间前面,并且您必须在两者之间使用分隔符。有效分隔符是单个空格、字母 't' 或字母 'T'。
-
时间值 – 您必须使用 24 小时时钟指定时间。协调世界时 (UTC) 偏移量前面必须带有加号 (+) 或减号 (-)。
格式示例
字面值示例
YYYYMMDD
`20141231`
YYMMDD
`141231`
YYYYMMDD hhmmss
`20141231 235959`
YYMMDDthhmm
`141231t2359`
YYYYMMDDThh
`20141231T23`
YYYYMMDD hhmmss+/-hhmm
(UTC 偏移量)
`20141231 235959-0500`
YYMMDD hhmm+/-hh
(UTC 偏移量)
`141231 2359+01`
thhmmss
`t235959`
Thhmm
`T2359`
说明
请勿在包含 UTC 偏移量数据的主时间格式中单独使用 hh。例如,请避免:hh+hhmm。结果可能不可靠。