<< 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"])) |