逻辑函数

<< Click to Display Table of Contents >>

当前位置:  附录 > 计算列和计算函数 > 基础函数 > 基本计算函数 

逻辑函数

复制链接

逻辑计算用来确定某个特定条件为真还是假(布尔逻辑)。

例如:

希望快速确定分销商品的每个省的销售额是高于还是低于特定阈值。

逻辑计算可能如下所示:

SUM(Sales) > 1,000,000

逻辑函数语法表:

函数

语法

说明

举例

and

if <expr1> and <expr2> then <then> end

对两个表达式执行逻辑上做并且的判断。

if (col['产品种类'] == "咖啡") and (col['省份'] == "茶") then 1 else 2 end

case

case <expr> when <value1> then <return1> when <value2> then <return2> ... [else <else>] end

执行逻辑测试并返回相应的值。case函数可评估expr,并将其与一系列值(value1、 value2 等)比较,然后返回结果。遇到一个与expr匹配的值时,case 返回相应的返回值。如果未找到匹配值,则使用默认返回表达式。如果不存在默认返回表达式,并且没有任何值匹配,则会返回Null。

case比iif或if then else更易于使用。

通常,使用一个if函数来执行一系列任意测试,并使用case函数搜索与表达式匹配的值。但case函数都可以重写为if函数,不过case函数一般更加简明。

case col['产品种类'] when "咖啡" then 1 when "茶" then 2 else 3 end

else

if <expr> then <then> [else <else>] end

测试一系列表达式,同时第一个为 true 的 <expr> 返回 <then> 值。

if (col['sales'] > 10000) then "高利润" then "保持成本" else "亏本" end

elseif

if <expr> then <then> [elseif <expr2> then <then2>...] [else <else>] end

测试一系列表达式,同时第一个为 true 的 <expr> 返回 <then> 值。

if (col['sales'] > 10000) then "高利润" elseif (col['sales'] < 10000 and col['sales'] > 1500) then "保持成本" else "亏本" end

end

if <expr> then <then> [elseif <expr2> then <then2>...] [else <else>] end

测试一系列表达式,同时第一个为 true 的 <expr> 返回 <then> 值。end必须放在表达式的结尾。

if (col['sales'] > 10000) then "高利润" elseif (col['sales'] < 10000 and col['sales'] > 1500) then "保持成本" else "亏本" end

if

if <expr> then <then> [elseif <expr2> then <then2>...] [else <else>] end

测试一系列表达式,同时为第一个为 true 的 <expr> 返回 <then> 值。

if (col['sales'] > 10000) then "高利润" else if (col['sales'] < 10000 and col['sales'] > 1500) then "保持成本" else "亏本" end

ifNull

ifNull(expr1, expr2)

如果 <expr1> 不为null,则返回该表达式,否则返回 <expr2>。

ifNull(col['Profit'], 0)

iif

iif(expr,return1,return2)

检查某个条件是否得到满足,如果为 true 则返回一个值,如果为 false 则返回另一个值,如果未知,则返回可选的第三个值或 null。

iif (col['sales']>6, 3, 1),如果此列的值大于6就返回3,否则返回1。

isNull

isNull(expression)

如果表达式未包含有效数据(null),则返回 true

isNull(col['Profit'])=false

isNumber

isNumber(expression)

检测对象是否是数值类型,数值类型返回true,否则返回false。

isNumber("work")=false

not

if not <expr> then <then> end

对一个表达式执行逻辑非运算。

if not (col['profit'] > 0) then "unprofitable" end

or

if <expr1> or <expr2> then <then1> end

对两个表达式执行或者的条件判断。

if col['Profit'] < 0 or col['Profit'] == 0 then "没有盈利" end

then

if <expre> then <then> [elseif ,expr2> then <then2>...] [else <else>] end

测试一系列表达式的逻辑条件,符合条件的用then子句去判断返回值。

if (col['sales'] > 10000) then "高利润" elseif (col['sales'] < 10000 and col['sales'] > 1500) then "保持成本" else "亏本" end

when

case <expr> when <value1> then <return1> ... [else <else>] end

查找第一个与 <expr> 匹配的 <value>,并返回对应的 <return>。

case col['Procut_Name']

when 'Tea' then 1

when 'Coffee' then 2

else 3 end

in

<expr1> in (<expr2>)

如果 <expr1> 与 <expr2> 中的任何值匹配,则返回true,否则返回false。

expr1 为细节数据列,如 col['Profit'];或汇总数据列,如 sum(col['Profit'])。

expr2 为一个或多个常量值或参数。

col['Profit'] in (11,22,NULL)

sum(col['Profit']) in (11,22)

col['Profit'] in (param['a'])

ifNullThenZero

ifNullThenZero(expr)

如果 expr 不为 null ,则返回它,否则返回0。

ifNullThenZero(col["Profit"])

ifNullThenZero(sum(col["Profit"]))