# match 指令碼與圖表函數

match 函數會比較第一個參數與所有後續參數，並傳回相符的運算式數字位置。比較區分大小寫。

語法：

match( str, expr1 [ , expr2,...exprN ])

傳回的資料類型： 整數

提示備註如果您想要使用不區分大小寫的比較，請使用 mixmatch 函數。如果您想要使用不區分大小寫的比較及萬用字元，請使用 wildmatch 函數。

引數

| 引數 | 描述 |
| --- | --- |
| str | 要評估的字串。 |
| expr1 | 要檢查數字表示的有效性的第一個運算式。 |
| expr2 | 要檢查數字表示的有效性的第二個運算式。 |
| expr3 | 要檢查數字表示的有效性的第三個運算式。 |

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `match( ColorCode,'Blue','Black' )` | 此運算式將符合的索引傳回到 `ColorCode` 欄位。如果值 `ColorCode` 是 `Blue`，則傳回 `1`。如果值 `ColorCode` 是 `Black`，則傳回 `2`。如果找不到符合的值，則會傳回 `0`。 |
| `match( Region, 'North', 'East' )` | 此運算式將符合的索引傳回到 `Region` 欄位。如果值 `Region` 是 `North`，則傳回 `1`。如果值 `Region` 是 `East`，則傳回 `2`。如果找不到符合的值，則會傳回 `0`。 |

本主題中的某些範例使用內嵌載入。如需詳細資訊，請參閱[使用內嵌載入以載入資料](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)。

## 範例 - 使用 match 對產品進行分類

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### 圖表運算式

概述

資料集包含產品資料。您想要識別並分類可取用的產品。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `ProductID`

  * `ProductName`

  * `ProductCategory`

載入指令碼

```
Example:
LOAD * INLINE [
ProductID, ProductName, ProductCategory
1, "Laptop", "Electronics"
2, "Banana", "Fruits"
3, "Shampoo", "Toiletries"
4, "TV", "Electronics"
5, "Apple", "Fruits"
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `ProductID`

* `ProductName`

* `ProductCategory`

建立下列量值：

* `=match(ProductCategory,'Toiletries', 'Fruits')`，用來傳回 `ProductCategory` 具有值 `Toiletries` 或 `Fruits` 的索引。

* `=If(match(ProductCategory, 'Toiletries', 'Fruits'), 'Consumable', 'Other')`，用來傳回 `ProductCategory` 具有值 `Toiletries` 或 `Fruits` 的索引。如果找到任何一個，則傳回 `Consumable`。否則，會傳回 `Other`。

結果表格

| ProductID | ProductName | ProductCategory | match(ProductCategory,'Toiletries', 'Fruits') | If(match(ProductCategory, 'Toiletries', 'Fruits'), 'Consumable', 'Other') |
| --- | --- | --- | --- | --- |
| 1 | Laptop | Electronics | 0 | Other |
| 2 | Banana | Fruits | 2 | Consumable |
| 3 | Shampoo | Toiletries | 1 | Consumable |
| 4 | TV | Electronics | 0 | Other |
| 5 | Apple | Fruits | 2 | Consumable |

`match` 函數傳回第一個量值中搜尋字串的索引。在第二個量值中，此結果隨後在 `If` 函數中用於將產品分類為 `Consumable` 或 `Other`。

## 範例 - 使用 match 評估和分類用戶端資料

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### 圖表運算式

概述

資料集包含用戶端資料。您想要識別並分類符合您分類要求的用戶端區域和產業類別。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `ClientID`

  * `ClientName`

  * `Region`

  * `Industry`

載入指令碼

```
Example:
LOAD * INLINE [
ClientID, ClientName, Region, Industry
1, "Acme Corp", "North", "Manufacturing"
2, "Beta Ltd", "East", "Technology"
3, "Gamma Inc", "West", "Retail"
4, "Delta LLC", "North", "Technology"
5, "Epsilon GmbH", "South", "Healthcare"
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `ClientID`

* `ClientName`

* `Region`

* `Industry`

建立下列量值：

`=IF(match(Region, 'North', 'East') AND match(Industry, 'Technology', 'Manufacturing'), 'Target Segment', 'Secondary Segment')`，用來傳回搜尋字串的索引。如果找到，則傳回 `Target Segment`。如果找不到，則傳回 `Secondary Segment`。

結果表格

| ClientID | ClientName | Region | Industry | IF(match(Region, 'North', 'East') AND match(Industry, 'Technology', 'Manufacturing'), 'Target Segment', 'Secondary Segment') |
| --- | --- | --- | --- | --- |
| 1 | Acme Corp | North | Manufacturing | Target Segment |
| 2 | Beta Ltd | East | Technology | Target Segment |
| 3 | Gamma Inc | West | Retail | Secondary Segment |
| 4 | Delta LLC | North | Technology | Target Segment |
| 5 | Epsilon GmbH | South | Healthcare | Secondary Segment |

`match` 函數搜尋文字並傳回索引，這之後可用於執行其他分析和資料分類。例如，`Acme Corp` 分類為 `Target Segment`，因為這同時滿足 `match` 函數對 `Region` 和 `Industry` 欄位的搜尋要求。

## 範例：使用 match 的載入指令碼

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### 載入指令碼

概述

您可以使用 match 載入資料子集。例如，您可以傳回函數中運算式的數值。然後您可以限制根據數值載入的資料。若沒有相符項目，Match 函數會傳回 0。在此範例中相符的所有運算式將會因此傳回 0，並且將會按照 `WHERE` 陳述式從資料載入中排除。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 資料集載入到的兩個資料表格稱為：

  * `Transactions`：包括交易欄位

  * `Transaction_Buckets`：建立兩個新欄位 `Customer` 和 `Color Code Blue and Black`。`where` 陳述式從 `match` 函數載入結果。

載入指令碼

```
Transactions:
Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, m, orange
3752, 20180916, 5.75, 1, 5646471, S, blue
3753, 20180922, 125.00, 7, 3036491, l, Black
3754, 20180922, 484.21, 13, 049681, xs, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
];
 
/*
Create new table called Transaction_Buckets
Create new fields called Customer, and Color code Blue and Black
Load Transactions table.
Match returns 1 for 'Blue', 2 for 'Black'. 
Does not return a value for 'blue' because match is case sensitive.
Only values that returned numeric value greater than 0 
are loaded by WHERE statement into Transactions_Buckets table.
*/
 
Transaction_Buckets:
Load
 customer_id,
 customer_id as [Customer], 
 color_code as [Color Code Blue and Black]
Resident Transactions
Where match(color_code,'Blue','Black') > 0; 
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `[Color Code Blue and Black]`

* `Customer`

使用載入指令碼中的 matchmatch 函數來顯示輸出的結果表格

| Color Code Blue and Black | Customer |
| --- | --- |
| Black | 203521 |
| Black | 3036491 |
| Blue | 2038593 |

## 範例 - 使用 match 的圖表運算式

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### 圖表運算式

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到稱為 Example 之資料表格的資料集。

* 資料表格中的欄位如下：

  * Cities

  * Count

載入指令碼

```
Example:
Load * inline [
Cities, Count
Toronto, 123
Toronto, 234
Toronto, 231
Boston, 32
Boston, 23
Boston, 1341
Beijing, 234
Beijing, 45
Beijing, 235
Stockholm, 938
Stockholm, 39
Stockholm, 189
zurich, 2342
zurich, 9033
zurich, 0039];
```

結果

載入資料並開啟工作表。建立新的表格並將此欄位新增為維度：

* Cities

建立下列量值：

* =match( Cities,'Toronto','Boston','Beijing','Zurich')，用來傳回搜尋字串的索引。

* =match( Cities,'Toronto','Boston','Beijing','Stockholm','zurich')，用來傳回搜尋字串的索引。

* =Cities & ' - ' & match ( Cities, 'Toronto','Boston', 'Beijing','Stockholm','zurich')，用來傳回 Cities 欄位和搜尋字串的索引。

以下表格中的第一個量值會傳回 0 代表 Stockholm，因為 Stockholm 不包括在 match 函數的運算式清單中。這也會傳回 0 代表 Zurich，因為 match 比較區分大小寫。

結果表格

| Cities | match( Cities,'Toronto','Boston','Beijing','Zurich') | match( Cities,'Toronto','Boston','Beijing','Stockholm','zurich') | Cities & ' - ' & match ( Cities, 'Toronto','Boston', 'Beijing','Stockholm','zurich') |
| --- | --- | --- | --- |
| Beijing | 3 | 3 | Beijing - 3 |
| Boston | 2 | 2 | Boston - 2 |
| Stockholm | 0 | 4 | Stockholm - 4 |
| Toronto | 1 | 1 | Toronto - 1 |
| zurich | 0 | 5 | zurich - 5 |

## 範例 - 使用 match 的自訂排序運算式

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)

#### 圖表運算式

概述

您可以使用 match 以執行運算式的自訂排序。此範例使用與上一個範例相同的資料集。

按照預設，會按數字或字母排序欄，視資料而定。

結果表格顯示預設排序

| Cities |
| --- |
| Beijing |
| Boston |
| Stockholm |
| Toronto |
| zurich |

若要變更排序順序，請執行下列事項：

1. 在屬性面板中開啟圖表的排序區段。

2. 對於您要進行自訂排序的欄，關閉自動排序。

3. 清除依數字排序和依字母順序排序核取方塊。

4. 選取按運算式排序，然後輸入類似下列項目的運算式：

   =match( Cities, 'Toronto','Boston','Beijing','Stockholm','zurich')

   Cities 欄的排序順序會變更。

結果表格顯示使用 matchmatch 函數的排序順序

| Cities |
| --- |
| Toronto |
| Boston |
| Beijing |
| Stockholm |
| zurich |

## 瞭解更多資訊

* [mixmatch 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/mixmatch.htm)
* [wildmatch 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/wildmatch.htm)