---
schema_version: "1"
id: ec638d1e385ed3211fcf817fffcb745dc2ccd34e59a2a840b0ff18fb9fc4a31d
title: 邏輯函數
collection: tableau
version: next
locale: zh-tw
portal_url: https://docs.salesforce.com/tableau/next/zh-tw/pro/desktop/functions_functions_logical.md
canonical_url: https://help.tableau.com/v0.0/pro/desktop/zh-tw/functions_functions_logical.htm
source_site: help.tableau.com
content_type: documentation
content_hash: ab8315c20305ede7f19222ba8ad96e4188eea0c0b577ad5b853d2ec3cec87a18
description: Reference for Tableau logical functions such as IF, CASE, and AND.
---
[跳至主要內容](#main-content)

# 邏輯函數

本文介紹 Tableau 中的邏輯函數及其用途。它還使用範例來示範如何建立邏輯計算。

## 為什麼使用邏輯計算

邏輯計算允許您確定某個特定條件為 true 還是 false（布林值邏輯）。例如，您可能希望根據某些截止值對值進行分類。

邏輯計算可能如下所示：

IF \[Profit\] > 0   
THEN 'Profitable'   
ELSEIF \[Profit\] = 0 THEN 'Break even'   
ELSE 'Loss'   
END

## Tableau 中的可用邏輯函數和運算子：

### AND

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>&lt;expr1&gt; AND &lt;expr2&gt;</code></td></tr><tr><td>定義</td><td>對兩個運算式執行邏輯合取運算。（如果雙方都為 true，則邏輯測試傳回 true。）</td></tr><tr><td>輸出</td><td>布林值（TRUE 或 FALSE）</td></tr><tr><td>範例</td><td><pre>IF [Season] = "Spring" AND "[Season] = "Fall" <br>THEN "It's the apocalypse and footwear doesn't matter" <br>END</pre><p><i>「若（Season = Spring [季節 = 春季]）和（Season = Fall [季節 = 秋季]）同時為 TRUE，則傳回 It's the apocalypse and footwear doesn't matter [現在是世界末日，穿什麼鞋無關緊要]。」</i></p></td></tr><tr><td>說明</td><td><p>經常與 <a href="#IF" class="xref">IF</a> 和 <a href="#IIF" class="xref">IIF</a> 一起使用。另請參閱 <a href="#NOT" class="xref">NOT</a> 和 <a href="#OR" class="xref">或者</a>。</p><p>若兩個運算式均為 <code>TRUE</code>（即非 <code>FALSE</code> 或 <code>NULL</code>），則結果為 <code>TRUE</code>。如果任一運算式為 <code>NULL</code>，則結果為 <code>NULL</code>。在所有其他情況下，結果都為 <code>FALSE</code>。</p><p>若您建立一個計算，其中 <code>AND</code> 比較的結果顯示在工作表上，則 Tableau 會顯示 <code>TRUE</code> 和 <code>FALSE</code>。如果要變更此情況，請使用設定格式對話方塊中的「設定格式」區域。</p><p class="note"><b>附註</b>：<code>AND</code> 運算子採用<i>短路計算</i>。這表示如果第一個運算式計算為 <code>FALSE</code>，則根本不會計算第二個運算式。如果第二個運算式在第一個運算式為 <code>FALSE</code> 時產生錯誤，則這可能十分有用，因為在這種情況下從不計算第二個運算式。</p></td></tr></tbody></table>

### CASE

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code><b>CASE</b> &lt;expression&gt; 
                        <br>WHEN &lt;value1&gt; THEN &lt;then1&gt; 
                        <br>WHEN &lt;value2&gt; THEN &lt;then2&gt; 
                        <br>...
                        <br>[ELSE &lt;default&gt;]<br>END</code></td></tr><tr><td>輸出</td><td>取決於 <code>&lt;then&gt;</code> 值的資料類型。</td></tr><tr><td>定義</td><td><p>計算 <code>expression</code>，並將其與指定選項（<code>&lt;value1&gt;</code>、<code>&lt;value2&gt;</code> 等）進行比較。遇到與運算式相符的 <code>value</code> 時，CASE 會傳回對應的 <code>return</code>。若未找到符合值，則傳回（可選）預設值。若沒有預設值且沒有值符合，則傳回 NULL。</p></td></tr><tr><td>範例</td><td><pre xml:space="preserve"><code><b>CASE</b> [Season] <br>WHEN 'Summer' THEN 'Sandals' <br>WHEN 'Winter' THEN 'Boots' <br>ELSE 'Sneakers' <br>END</code></pre><p><i>「讓我們來看看 Season [季節] 欄位。若值為 Summer [夏季]，則傳回 Sandals [涼鞋]。若值為 Winter [冬季]，則傳回 Boots [靴子]。若計算中的選項均不符合 Season [季節] 欄位中的選項，則傳回 Sneakers [運動鞋]。」</i></p></td></tr><tr><td>說明</td><td><p>另請參閱 <a href="#IF" class="xref">IF</a> 和 <a href="#IIF" class="xref">IIF</a>。</p><p>與 <a href="#WHEN" class="xref">WHEN</a>、<a href="#THEN" class="xref">you can rerun the query or view</a>、<a href="#ELSE" class="xref">ELSE</a> 和 <a href="#END" class="xref">END</a> 一起使用。</p><blockquote><p>[!TIP]</p><p><b>提示</b>：很多時候，可以使用群組來取得與複雜的 CASE 函數相同的結果，或者使用 CASE 來取代原生分組功能，例如前面的範例。您可能想要測試哪種方法更適合您的情境。</p></blockquote></td></tr></tbody></table>

### ELSE

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>CASE &lt;expression&gt; 
							<br>WHEN &lt;value1&gt; THEN &lt;then1&gt; 
							<br>WHEN &lt;value2&gt; THEN &lt;then2&gt; 
							<br>...
						<br>[<b>ELSE</b> &lt;default&gt;]<br>END</code></td></tr><tr><td>定義</td><td><code>IF</code> 或 <code>CASE</code> 運算式的可選部分，用於指定在所有測試運算式均不為 TRUE 時傳回的預設值。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">IF [Season] = "Summer"&nbsp;THEN&nbsp;'Sandals' <br>ELSEIF&nbsp;[Season] = "Winter"&nbsp;THEN&nbsp;'Boots' <br><b>ELSE</b>&nbsp;'Sneakers'&nbsp;<br>END</pre><pre>CASE [Season] <br>WHEN 'Summer' THEN 'Sandals' <br>WHEN 'Winter' THEN 'Boots' <br><b>ELSE</b> 'Sneakers' <br>END</pre></td></tr><tr><td>說明</td><td><p>與 <a href="#CASE" class="xref">CASE</a>、<a href="#WHEN" class="xref">WHEN</a>、<a href="#IF" class="xref">IF</a>、<a href="#ELSEIF" class="xref">ELSEIF</a>、<a href="#THEN" class="xref">you can rerun the query or view</a> 和 <a href="#END" class="xref">END</a> 一起使用</p><p><code>ELSE</code> 是 <code>CASE</code> 和 <code>IF</code> 的可選項。在未指定 <code>ELSE</code> 的計算中，若沒有一個 <code>&lt;test&gt;</code> 為 TRUE，則整個計算將傳回 NULL。</p><p><code>ELSE</code> 不需要條件（例如 <code>[Season] = "Winter"</code>），可以視為一種 NULL 處理形式。</p></td></tr></tbody></table>

### ELSEIF

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>[<b>ELSEIF</b> &lt;test2&gt; THEN &lt;then2&gt;]</code></td></tr><tr><td>定義</td><td><code>IF</code> 運算式的可選部分，用於指定初始 IF 以外的附加條件。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">IF [Season] = "Summer" THEN 'Sandals' <br><b>ELSEIF</b> [Season] = "Winter" THEN 'Boots' <br><b>ELSEIF</b> [Season] = "Spring" THEN 'Sneakers' <br><b>ELSEIF</b> [Season] = "Autumn" THEN 'Sneakers'<br>ELSE 'Bare feet' <br>END</pre></td></tr><tr><td>說明</td><td><p>與 <a href="#IF" class="xref">IF</a>、<a href="#THEN" class="xref">you can rerun the query or view</a>、<a href="#ELSE" class="xref">ELSE</a> 和 <a href="#END" class="xref">END</a> 一起使用</p><p><code>ELSEIF</code> 可以被認為是額外的 <code>IF</code> 子句。<code>ELSEIF</code> 為可選項，並且可以重複多次。</p><p>與 <code>ELSE</code> 不同，<code>ELSEIF</code> 需要一個條件（例如 <code>[Season] = "Winter"</code>）。</p></td></tr></tbody></table>

### END

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>定義</td><td>用於關閉 <code>IF</code> 或 <code>CASE</code> 運算式。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">IF [Season] = "Summer"&nbsp;THEN&nbsp;'Sandals' <br>ELSEIF&nbsp;[Season] = "Winter"&nbsp;THEN&nbsp;'Boots' <br>ELSE&nbsp;'Sneakers'&nbsp;<br><b>END</b></pre><p><i>「若 Season = Summer [季節 = 夏季]，則傳回 Sandals [涼鞋]。如果不是，請看下一個運算式。若 Season = Winter [季節 = 冬季]，則傳回 Boots [靴子]。若兩個運算式均不為 TRUE，則傳回 Sneakers [運動鞋]。」</i></p><pre>CASE [Season] <br>WHEN 'Summer' THEN 'Sandals' <br>WHEN 'Winter' THEN 'Boots' <br>ELSE 'Sneakers' <br><b>END</b></pre><p><i><i>「讓我們來看看 Season [季節] 欄位。若值為 Summer [夏季]，則傳回 Sandals [涼鞋]。若值為 Winter [冬季]，則傳回 Boots [靴子]。若計算中的選項均不符合 Season [季節] 欄位中的選項，則傳回 Sneakers [運動鞋]。」</i></i></p></td></tr><tr><td>說明</td><td><p>與 <a href="#CASE" class="xref">CASE</a>、<a href="#WHEN" class="xref">WHEN</a>、<a href="#IF" class="xref">IF</a>、<a href="#ELSEIF" class="xref">ELSEIF</a>、<a href="#THEN" class="xref">you can rerun the query or view</a> 和 <a href="#ELSE" class="xref">ELSE</a> 一起使用。</p></td></tr></tbody></table>

### IF

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code><b>IF</b> &lt;test1&gt; THEN &lt;then1&gt; <br>[ELSEIF &lt;test2&gt; THEN &lt;then2&gt;...]<br>[ELSE &lt;default&gt;] <br>END</code></td></tr><tr><td>輸出</td><td>取決於 <code>&lt;then&gt;</code> 值的資料類型。</td></tr><tr><td>定義</td><td><p>測試一系列運算式，並為第一個為 TRUE 的 <code>&lt;test&gt;</code> 傳回 <code>&lt;then&gt;</code> 值。</p></td></tr><tr><td>範例</td><td><pre xml:space="preserve">IF [Season] = "Summer"&nbsp;THEN&nbsp;'Sandals' <br>ELSEIF&nbsp;[Season] = "Winter"&nbsp;THEN&nbsp;'Boots' <br>ELSE&nbsp;'Sneakers'&nbsp;<br><b>END</b></pre><p><i>「若 Season = Summer [季節 = 夏季]，則傳回 Sandals [涼鞋]。若不是，查看下一個運算式。若 Season = Winter [季節 = 冬季]，則傳回 Boots [靴子]。若兩個運算式均不為 TRUE，則傳回 Sneakers [運動鞋]。」</i></p></td></tr><tr><td>說明</td><td><p>另請參閱 <a href="#IF" class="xref">IF</a> 和 <a href="#IIF" class="xref">IIF</a>。</p><p>與 <a href="#ELSEIF" class="xref">ELSEIF</a>、<a href="#THEN" class="xref">you can rerun the query or view</a>、<a href="#ELSE" class="xref">ELSE</a> 和 <a href="#END" class="xref">END</a> 一起使用</p></td></tr></tbody></table>

### IFNULL

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>IFNULL(expr1, expr2)</code></td></tr><tr><td>輸出</td><td>取決於 <code>&lt;expr&gt;</code> 值的資料類型。</td></tr><tr><td>定義</td><td><p>若 <code>&lt;expr1&gt;</code> 不為 NULL，則傳回該運算式，否則傳回 <code>&lt;expr2&gt;</code>。</p></td></tr><tr><td>範例</td><td><pre xml:space="preserve">IFNULL([Assigned Room], "TBD")</pre><p><i>「如果『指派的房間』欄位不是 Null，傳回其值。如果『指派的房間』欄位為 Null，則傳回 TBD。」</i></p></td></tr><tr><td>說明</td><td><p>與 <a href="#ISNULL" class="xref">ISNULL</a> 進行比較。<code>IFNULL</code> 會始終傳回一個值。<code>ISNULL</code> 會傳回一個布林值（TRUE 或 FALSE）。</p><p>另請參閱 <a href="#ZN" class="xref">ZN</a>。</p></td></tr></tbody></table>

### IIF

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code><b>IIF</b>(&lt;test&gt;, &lt;then&gt;, &lt;else&gt;, [&lt;unknown&gt;])</code></td></tr><tr><td>輸出</td><td>取決於運算式中值的資料類型。</td></tr><tr><td>定義</td><td>檢查是否符合條件 (<code>&lt;test&gt;</code>)，若測試為 TRUE，則傳回 <code>&lt;then&gt;</code>；若測試為 FALSE，則傳回 <code>&lt;else&gt;</code>；若測試為 NULL，則傳回 <code>&lt;unknown&gt;</code> 的可選值。若未指定可選的 unknown，則 <code>IIF</code> 傳回 NULL。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">IIF([Season] = 'Summer', 'Sandals', 'Other footwear')</pre><p><i>「若 Season = Summer [季節 = 夏季]，則傳回 Sandals [涼鞋]。若不是，傳回其他鞋類」</i></p><pre xml:space="preserve">IIF([Season] = 'Summer', 'Sandals', <br>   IIF('Season' = 'Winter', 'Boots',  'Other footwear')<br>)</pre><p><i>「若 Season = Summer [季節 = 夏季]，則傳回 Sandals [涼鞋]。如果不是，請看下一個運算式。若 Season = Winter [季節 = 冬季]，則傳回 Boots [靴子]。若兩者均不為 TRUE，則傳回『運動鞋』。」</i></p><pre xml:space="preserve">IIF('Season' = 'Summer', 'Sandals', <br>   IIF('Season' = 'Winter', 'Boots',  <br>      IIF('Season' = 'Spring', 'Sneakers', 'Other footwear')<br>   )<br>)</pre><p><i>「若 Season = Summer [季節 = 夏季]，則傳回 Sandals [涼鞋]。如果不是，請看下一個運算式。若 Season = Winter [季節 = 冬季]，則傳回 Boots [靴子]。若兩個運算式均不為 TRUE，則傳回 Sneakers [運動鞋]。」</i></p></td></tr><tr><td>說明</td><td><p>另請參閱 <a href="#IF" class="xref">IF</a> 和 <a href="#CASE" class="xref">CASE</a>。</p><p><code>IIF</code> 沒有與 <code>ELSEIF</code> 等效的項（如 <code>IF</code>）或重複的 <code>WHEN</code> 子句（如 <code>CASE</code>）。相反，可以透過將 <code>IIF</code> 陳述式巢套為 <code>&lt;unknown&gt;</code> 元素來按順序計算多個測試。系統會傳回第一個（最外面的）TRUE。</p><p>也就是說，在下面的計算中，結果將為 Red [紅色]，而不是 Orange [橙色]，因為一旦 A=A 計算為 TRUE，運算式就會停止計算：</p><p><code>IIF('A' = 'A', 'Red', IIF('B' = 'B', 'Orange',  IIF('C' = 'D', 'Yellow', 'Green')))</code></p></td></tr></tbody></table>

### IN

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>&lt;expr1&gt; IN &lt;expr2&gt;</code></td></tr><tr><td>輸出</td><td>布林值（TRUE 或 FALSE）</td></tr><tr><td>定義</td><td>若 <code>&lt;expr1&gt;</code> 中的任何值與 <code>&lt;expr2&gt;</code> 中的任何值相符，則傳回 <code>TRUE</code>。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">SUM([Cost]) IN&nbsp;(1000, 15, 200)</pre><p><i>「『成本』欄位的值是 1000、15 還是 200？」</i></p><pre xml:space="preserve">[Field] IN&nbsp;[Set]</pre><p><i>「該欄位的值是否存在於集合中？」</i></p></td></tr><tr><td>說明</td><td><p><code>&lt;expr2&gt;</code> 中的值可以為固定的常值清單或合併欄位。</p><p>另請參閱 <a href="#WHEN" class="xref">WHEN</a>。</p></td></tr></tbody></table>

### ISDATE

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>ISDATE(string)</code></td></tr><tr><td>輸出</td><td>布林值（TRUE 或 FALSE）</td></tr><tr><td>定義</td><td>若 <code>&lt;string&gt;</code> 為有效日期，則傳回 TRUE。輸入運算式必須為字串（文字）欄位。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">ISDATE("2018-09-22")</pre><p><i>「字串 2018-09-22 是否為格式正確的日期？」</i></p></td></tr><tr><td>說明</td><td><p>是否被視為有效日期取決於對計算進行求值之系統的<a href="https://help.tableau.com/current/server/zh-tw/lang_intro.htm" target="_blank">地區設定</a>。例如：</p><p>在美國：</p><ul><li><code>ISDATE("2018-09-22") = TRUE</code></li><li><code>ISDATE("2018-22-09") = FALSE</code></li></ul><p>在英國： </p><ul><li><code>ISDATE("2018-09-22") = FALSE</code></li><li><code>ISDATE("2018-22-09") = TRUE</code></li></ul><p></p></td></tr></tbody></table>

### ISNULL

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>ISNULL(expression)</code></td></tr><tr><td>輸出</td><td>布林值（TRUE 或 FALSE）</td></tr><tr><td>定義</td><td><p>若 <code>&lt;expression&gt;</code> 為 NULL（不包含有效資料），則傳回 TRUE。</p></td></tr><tr><td>範例</td><td><pre xml:space="preserve">ISNULL([Assigned Room])</pre><p><i>「『指派的房間』欄位是否為 Null？」</i></p></td></tr><tr><td>說明</td><td><p>與 <a href="#IFNULL" class="xref">IFNULL</a> 進行比較。<code>IFNULL</code> 會始終傳回一個值。<code>ISNULL</code> 傳回布林值。</p><p>另請參閱 <a href="#ZN" class="xref">ZN</a>。</p></td></tr></tbody></table>

### MAX

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>MAX(expression)</code> 或 <code>MAX(expr1, expr2)</code></td></tr><tr><td>輸出</td><td>與引數相同的資料類型，若引數的任何部分為 NULL，則為 <code>NULL&nbsp;</code>。</td></tr><tr><td>定義</td><td><p>傳回兩個引數中的最大值，這兩個引數必須具有相同的資料類型。</p><p><code>MAX</code> 也可以作為彙總套用於單一欄位。</p></td></tr><tr><td>範例</td><td><pre xml:space="preserve">MAX(4,7) = 7<br>MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021# <br>MAX([Name]) = "Zander"</pre></td></tr><tr><td>說明</td><td><p><b>對於字串</b></p><p><code>MAX</code> 通常是按字母順序排在最後的值。</p><p class="note">對於資料庫資料來源，<code>MAX</code> 字串值是資料庫為欄定義的排序順序中的最高值。</p><p><b>對於日期</b></p><p>對於日期，<code>MAX</code> 是最近的日期。如果 <code>MAX</code> 是彙總，結果不會有日期階層。如果 <code>MAX</code> 是比較，結果將保留日期階層。</p><p><b>作為彙總</b></p><p><code>MAX(expression)</code> 為彙總函數，會傳回單一彙總結果。這在視覺效果中顯示為 <code>AGG(expression)</code>。</p><p><b>作為比較</b></p><p><code>MAX(expr1, expr2)</code> 會比較兩個值，並傳回一個列層級值。</p><p>另請參閱 <code><a href="#MIN" class="xref">MIN</a></code>。</p></td></tr></tbody></table>

### MIN

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>MIN(expression)</code> 或 <code>MIN(expr1, expr2)</code></td></tr><tr><td>輸出</td><td>與引數相同的資料類型，若引數的任何部分為 NULL，則為 <code>NULL&nbsp;</code>。</td></tr><tr><td>定義</td><td><p>傳回兩個引數（必須為相同資料類型）的最小值。</p><p><code>MIN </code> 也可以作為彙總套用於單一欄位。</p></td></tr><tr><td>範例</td><td><pre xml:space="preserve">MIN(4,7) = 4<br>MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#<br>MIN([Name]) = "Abebi"</pre></td></tr><tr><td>說明</td><td><p><b>對於字串</b></p><p><code>MIN</code> 通常是按字母順序排列在最前面的值。</p><p class="note">對於資料庫資料來源，<code>MIN</code> 字串值是資料庫為欄定義的排序順序中的最低值。</p><p><b>對於日期</b></p><p>對於日期，<code>MIN</code> 是最早的日期。如果 <code>MIN</code> 是彙總，結果不會有日期階層。若 <code>MIN</code> 為比較，結果將保留日期階層。</p><p><b>作為彙總</b></p><p><code>MIN(expression)</code> 為彙總函數，會傳回單一彙總結果。這在視覺效果中顯示為 <code>AGG(expression)</code>。</p><p><b>作為比較</b></p><p><code>MIN(expr1, expr2)</code> 會比較兩個值，並傳回一個列層級值。</p><p>另請參閱 <code><a href="#MAX" class="xref">MAX</a></code>。</p></td></tr></tbody></table>

### NOT

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>NOT&nbsp;&lt;expression&gt;</code></td></tr><tr><td>輸出</td><td>布林值（TRUE 或 FALSE）</td></tr><tr><td>定義</td><td>對一個運算式執行邏輯非運算。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">IF <b>NOT</b> [Season] = "Summer" <br>THEN 'Don't wear sandals' <br>ELSE&nbsp;'Wear sandals'&nbsp;<br><b>END</b></pre><p><i>「如果『季節』不等於『夏天』，就傳回『不要』穿涼鞋。如果不是，就傳回『穿』涼鞋。」</i></p></td></tr><tr><td>說明</td><td><p>常與 <a href="#IF" class="xref">IF</a> 和 <a href="#IIF" class="xref">IIF</a> 一起使用。另請參閱 <a href="#top" class="xref">AND</a> 和 <a href="#OR" class="xref">或者</a>。</p></td></tr></tbody></table>

### 或者

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>&lt;expr1&gt; OR &lt;expr2&gt;</code></td></tr><tr><td>輸出</td><td>布林值（TRUE 或 FALSE）</td></tr><tr><td>定義</td><td>對兩個運算式執行邏輯析取操作。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">IF [Season] = "Spring"&nbsp;<b>OR</b>&nbsp;[Season] = "Fall" <br>THEN&nbsp;"Sneakers" <br>END</pre><p><i>「如果 (Season = Spring) 或 (Season = Fall) 為 true，則傳回 Sneakers。」</i></p></td></tr><tr><td>說明</td><td><p>常與 <a href="#IF" class="xref">IF</a> 和 <a href="#IIF" class="xref">IIF</a> 一起使用。另請參閱 <a href="#top" class="xref">AND</a> 和 <a href="#NOT" class="xref">NOT</a>。</p><p>如果任一運算式為 <code>TRUE</code>，則結果為 <code>TRUE</code>。如果兩個運算式都為 <code>FALSE</code>，則結果為 <code>FALSE</code>。如果兩個運算式都為 <code>NULL</code>，則結果為 <code>NULL</code>。</p><p>若您建立的計算在工作表上顯示 <code>OR</code> 比較的結果，則 Tableau 將顯示 TRUE 和 FALSE。如果要變更此情況，請使用設定格式對話方塊中的「設定格式」區域。</p><p class="note"><b>附註</b>：<code>OR</code> 運算子採用<em>短路計算</em>。這表示如果第一個運算式計算為 <code>TRUE</code>，則根本不會計算第二個運算式。如果第二個運算式在第一個運算式為 <code>TRUE</code> 時產生錯誤，則這可能十分有用，因為在這種情況下從不計算第二個運算式。</p></td></tr></tbody></table>

### you can rerun the query or view

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>IF &lt;test1&gt; <b>THEN</b> &lt;then1&gt; 
							<br>[ELSEIF &lt;test2&gt; <b>THEN</b> &lt;then2&gt;...]
							<br>[ELSE &lt;default&gt;] 
						<br>END</code></td></tr><tr><td>定義</td><td><code>IF</code>、<code>ELSEIF</code> 或 <code>CASE</code> 運算式的必要部分，用於定義在特定值或測試為 TRUE 時傳回的結果。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">IF [Season] = "Summer"&nbsp;<b>THEN</b>&nbsp;'Sandals' <br>ELSEIF&nbsp;[Season] = "Winter"&nbsp;<b>THEN</b>&nbsp;'Boots' <br>ELSE&nbsp;'Sneakers'&nbsp;<br>END</pre><p><i>「若 Season = Summer [季節 = 夏季]，則傳回 Sandals [涼鞋]。如果不是，請看下一個運算式。若 Season = Winter [季節 = 冬季]，則傳回 Boots [靴子]。若兩個運算式均不為 TRUE，則傳回 Sneakers [運動鞋]。」</i></p><pre>CASE [Season] <br>WHEN 'Summer' <b>THEN</b> 'Sandals' <br>WHEN 'Winter' <b>THEN</b> 'Boots' <br>ELSE 'Sneakers' <br>END</pre><p><i><i>「讓我們來看看 Season [季節] 欄位。若值為 Summer [夏季]，則傳回 Sandals [涼鞋]。若值為 Winter [冬季]，則傳回 Boots [靴子]。若計算中的選項均不符合 Season [季節] 欄位中的選項，則傳回 Sneakers [運動鞋]。」</i></i></p></td></tr><tr><td>說明</td><td><p>與 <a href="#CASE" class="xref">CASE</a>、<a href="#WHEN" class="xref">WHEN</a>、<a href="#IF" class="xref">IF</a>、<a href="#ELSEIF" class="xref">ELSEIF</a>、<a href="#THEN" class="xref">you can rerun the query or view</a>、<a href="#ELSE" class="xref">ELSE</a> 和 <a href="#END" class="xref">END</a> 一起使用</p></td></tr></tbody></table>

### WHEN

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>CASE &lt;expression&gt; 
							<br><b>WHEN</b> &lt;value1&gt; THEN &lt;then1&gt; 
							<br><b>WHEN</b> &lt;value2&gt; THEN &lt;then2&gt; 
							<br>...
						<br>[ELSE &lt;default&gt;]<br>END</code></td></tr><tr><td>定義</td><td><code>CASE</code> 運算式的必需部分。尋找第一個與 <code>&lt;expression&gt;</code> 相符的 <code>&lt;value&gt;</code>，並傳回對應的 <code>&lt;then&gt;</code>。</td></tr><tr><td>範例</td><td><pre>CASE [Season] <br><b>WHEN</b> 'Summer' THEN 'Sandals' <br><b>WHEN</b> 'Winter' THEN 'Boots' <br>ELSE 'Sneakers' <br>END</pre><p><i>「讓我們來看看 Season [季節] 欄位。若值為 Summer [夏季]，則傳回 Sandals [涼鞋]。若值為 Winter [冬季]，則傳回 Boots [靴子]。若計算中的選項均不符合 Season [季節] 欄位中的選項，則傳回 Sneakers [運動鞋]。」</i></p></td></tr><tr><td>說明</td><td><p>與 <a href="#CASE" class="xref">CASE</a>、<a href="#THEN" class="xref">you can rerun the query or view</a>、<a href="#ELSE" class="xref">ELSE</a> 和 <a href="#END" class="xref">END</a> 一起使用。</p><p><code>CASE</code> 也支援 <code>WHEN IN</code> 建構，例如：</p><pre xml:space="preserve">CASE &lt;expression&gt; <br><b>WHEN IN</b> &lt;set1&gt; THEN &lt;then1&gt; <br><b>WHEN IN</b> &lt;combinedfield&gt; THEN &lt;then2&gt; <br>... <br>ELSE &lt;default&gt; <br>END</pre><p><code>WHEN IN</code> 比較的值必須是集合、常值清單或合併欄位。另請參閱 <a href="#IN" class="xref">IN</a>。</p></td></tr></tbody></table>

### ZN

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>語法</td><td><code>ZN(expression)</code></td></tr><tr><td>輸出</td><td>取決於 <code>&lt;expression&gt;</code> 的資料類型，或為 0。</td></tr><tr><td>定義</td><td>若 &lt;expression&gt; 不為 NULL，則傳回該運算式，否則傳回 0。</td></tr><tr><td>範例</td><td><pre xml:space="preserve">ZN([Test Grade])</pre><p><i>「若測驗成績不為 NULL，則傳回其值。若測驗成績為 NULL，則傳回 0。」</i></p></td></tr><tr><td>說明</td><td><p><code>ZN</code> 是 <a href="#IFNULL" class="xref">IFNULL</a> 的特殊情況，其中若運算式為 NULL，則替代項始終為 0，而不是在計算中指定。</p><p><code>ZN</code> 在執行額外計算時特別有用，並且 NULL 會讓整個計算為 NULL。但是，請謹慎，將這些結果解譯為 NULL 並不總是與 0 同義，並且可能表示缺失資料。</p><p>另請參閱 <a href="#ISNULL" class="xref">ISNULL</a>。</p></td></tr></tbody></table>  

**附註：**其中一些實際上是邏輯運算符，顯示為黑色，而不是藍色。如需更多資訊，請參閱[運算子語法](https://help.tableau.com/v0.0/pro/desktop/zh-tw/functions_operators.htm#Operators)。

關於 CASE、IF 和 IIF 的附註

CASE 比 IF 或 IIF 更易於使用。在許多情況下，IF、IIF 和 CASE 可以互換使用。CASE 陳述式始終可以重寫為 IF 陳述式，儘管 CASE 函數通常會更簡潔並且可能更容易理解。但是，並非所有 IF 陳述式都可以寫成 CASE 陳述式，因為每個 ELSEIF 可能會引用不同的欄位。

**提示**：讓我們比較一下在這三個函數中使用相同邏輯的範例：  

<table style="width: 100%;" class="table--plain"><colgroup><col style="width: 33%;"><col style="width: 33%;"><col></colgroup><tbody><tr><td>CASE</td><td>IF</td><td>IIF</td></tr><tr><td><pre>CASE [Region]<br>WHEN 'West' THEN 1<br>WHEN 'East' THEN 2<br>WHEN 'South' THEN 3<br>WHEN 'North' Then 4<br>ELSE 5<br>END</pre></td><td><pre>IF [Region] = 'West' THEN 1<br>ELSEIF [Region] = 'East' THEN 2<br>ELSEIF [Region] = 'South' THEN 3<br>ELSEIF [Region] = 'North' THEN 4<br>ELSE 5<br>END</pre></td><td><pre>IIF([Region] = 'West', 1,<br> IIF([Region] = 'East', 2,<br>  IIF([Region] = 'South', 3,<br>   IIF([Region] = 'North', 4,<br>   5, 0)<br>  )<br> )<br>)</pre></td></tr><tr><td><p>CASE 結構非常簡單，易於編寫和理解。但是，與 IF 或 IIF 不同，運算式（此處為 [區域]）不能是邏輯運算。</p><p>CASE 的 Null 值處理方式與 IF 的處理方式相同。</p></td><td><p>IF THEN 結構允許多個 ELSEIF 子句，這使得多次計算比 IIF 更容易。</p><p><b>Null 值處理</b>：任何未知（Null）結果都由與錯誤結果相同的 ELSE 子句處理。此處，除了指定的四個區域（包括 Null 值）之外的任何區域都將被指派值 5。</p></td><td><p>IIF 結構以不同於錯誤結果的方式處理未知結果，並且具有與 IF 不同的語法。如上所述，特定 Null 值處理的折衷是巢狀，這可能很難編寫和理解。</p><p><b>Null 值處理</b>：除了指定的四個區域之外的任何非 Null 區域都將被指派值 5，但 Null 值將被指派 0。</p></td></tr></tbody></table>

**附註**：很多時候可以使用群組獲得與複雜 case 函數相同的結果。測試一個選項是否比另一個選項效能更高。

### 範例

CASE 函數對於實現等情境非常有用：

CASE LEFT(DATENAME('weekday',\[Order Date\]),3)  
WHEN 'Sun' THEN 0  
WHEN 'Mon' THEN 1  
WHEN 'Tue' THEN 2  
WHEN 'Wed' THEN 3  
WHEN 'Thu' THEN 4   
WHEN 'Fri' THEN 5   
WHEN 'Sat' THEN 6  
END

或讓最終使用者能夠在與[參數](https://www.tableau.com/zh-tw/blog/using-parameter-change-fields-45866)一起使用時可以選取使用圖表中哪個度量去檢視:

CASE \[Choose a Measure\]  
WHEN "Sales" THEN SUM(\[Sales\])  
WHEN "Profit" THEN AVG(\[Profit\])  
WHEN "Quantity" THEN COUNT(\[Quantity\])  
WHEN "Shipping Cost" THEN MEDIAN(\[Shipping Cost\])  
END

## 建立邏輯計算

按照下面的步驟進行操作以瞭解如何建立邏輯計算。

1. 在 Tableau Desktop 中，連線到 Tableau 附帶的**\[範例 - 超級市場\]**已儲存資料來源。
2. 巡覽到工作表。
3. 從 \[**資料**\] 窗格中，將 \[State\] （市/縣）拖到 \[列\] 架。
4. 從 \[**資料**\] 窗格中，將 \[Category\] （類別）拖到 \[列\] 架，並將其放在 \[State\] （市/縣）的右側。
5. 從 \[**資料**\] 窗格中，將 \[Sales\] （銷售額）拖到 \[欄\] 架。
6. 選取 \[分析\] \> \[建立計算欄位\]。
7. 在開啟的計算編輯器中，執行以下操作：
    - 將計算欄位命名為 KPI 。
    - 輸入以下公式：
        
        SUM(\[Profit\]) > 0
        
        此計算將快速檢查某個成員是否大於零。如果大於零，則返回 true；否則返回 false。
    - 完成後，按一下 **\[確定\]**。

新計算欄位會顯示在 \[資料\] 窗格中的 \[度量\] 下。就像其他欄位一樣，您可以在一個或多個視覺效果中使用該欄位。

9. 從 \[資料\] 窗格中，將 **\[**KPI**\]** 拖到 \[標記\] 卡上的 **\[色彩\]** 。
    
    您現在可以看到每個市/縣的哪些類別在虧損。
    
    ![邏輯函數套用於橫條圖，醒目提示每個州虧損的產品類別。](/tableau/next/zh-tw/pro/desktop/zh-tw/Img/logicalfunctions1.png)

## 另請參閱

[顯示關鍵進度指標](https://help.tableau.com/v0.0/pro/desktop/zh-tw/kpi.htm)

[Tableau 中的函數](https://help.tableau.com/v0.0/pro/desktop/zh-tw/functions.htm)

[Tableau 函數（按類別）](https://help.tableau.com/v0.0/pro/desktop/zh-tw/functions_all_categories.htm)

[Tableau 函數（按字母順序）](https://help.tableau.com/v0.0/pro/desktop/zh-tw/functions_all_alphabetical.htm)