# wildmatch 指令碼與圖表函數

wildmatch 函數會比較第一個參數與所有後續參數，並傳回相符的運算式數目。這允許在比較字串中使用萬用字元 ( \* 和 ?)。 \* 符合任何字元順序。? 符合任何單一字元。比較區分大小寫，並區分日本平假名和片假名字元系統。

語法：

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

傳回的資料類型： 整數

如果您想要不用萬用字元進行比較，請使用 match 或 mixmatch 函數。

引數

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

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `wildmatch( ColorCode,'black','*Blue*' )` | 如果 `ColorCode` 的值為 `Black` 或 `2`，則此運算式傳回 `1`；如果 `ColorCode` 的值為 `Blue`，則傳回 `Light Blue` 或 `blue`。 |
| ` wildmatch( Cities,'toronto','Boston','Beijing','Zurich')  ` | 此運算式傳回 `Cities` 欄位中符合值的項目索引。 |

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

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

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

#### 圖表運算式

概述

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

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

載入指令碼包含：

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

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

  * `ProductID`

  * `ProductName`

  * `ProductCategory`

載入指令碼

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

結果

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

* `ProductID`

* `ProductName`

* `ProductCategory`

建立下列量值：

* `=wildmatch(ProductCategory, 'Toiletries*', 'Fruit*')`，用來傳回 `ProductCategory` 具有以 `Toiletries` 開始或以 `Fruit` 開始之值的索引。

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

資訊備註如果找到相符內容，則 `wildmatch` 函數會傳回非零正值；如果找不到相符內容，則傳回零。`if` 陳述式反過來會將非零結果解譯為 `true`，並將零解譯為 `false`。藉由合併 `if` 陳述式與 `mixmatch`、`wildmatch` 或 `match` 函數，可以輕鬆解碼相符和不相符的內容。

結果表格

| ProductID | ProductName | ProductCategory | wildmatch(ProductCategory, 'Toiletries\*', 'Fruit\*') | If(wildmatch(ProductCategory, 'Toiletries\*', 'Fruit\*') |
| --- | --- | --- | --- | --- |
| 1 | Laptop | Electronics | 0 | Other |
| 2 | Banana | fruit | 2 | Consumable |
| 3 | Shampoo | toiletries | 1 | Consumable |
| 4 | TV | Electronics | 0 | Other |
| 5 | Apple | Fruits and vegetables | 2 | Consumable |

`wildmatch` 函數傳回第一個量值中搜尋字串的索引。在第二個量值中，此結果隨後在 `If` 函數中用於提供自訂結果。請注意，`wildmatch` 函數不區分大小寫，並且允許使用萬用字元 (`*` 和 `?`)。

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

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

#### 圖表運算式

概述

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

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

載入指令碼包含：

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

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

  * `ClientID`

  * `ClientName`

  * `Region`

  * `Industry`

載入指令碼

```
Example:
LOAD * INLINE [ 
ClientID, ClientName, Region, Industry 
1, "Acme Corp", "north territory", "Vehicle Manufacturing" 
2, "Beta Ltd", "East location", "Science & Technology" 
3, "Gamma Inc", "west", "Retail Sales" 
4, "Delta LLC", "North", "Technology" 
5, "Epsilon GmbH", "South", "healthcare" 
];
```

結果

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

* `ClientID`

* `ClientName`

* `Region`

* `Industry`

建立下列量值：

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

結果表格

| ClientID | ClientName | Region | Industry | If(wildmatch(Region, 'North\*', 'East\*') AND wildmatch(Industry, '\*Technology\*', '\*Manufacturing\*'), 'Target Segment', 'Secondary Segment') |
| --- | --- | --- | --- | --- |
| 1 | Acme Corp | north territory | Vehicle Manufacturing | Target Segment |
| 2 | Beta Ltd | East location | Science & Technology | Target Segment |
| 3 | Gamma Inc | west | Retail Sales | Secondary Segment |
| 4 | Delta LLC | North | Technology | Target Segment |
| 5 | Epsilon GmbH | South | healthcare | Secondary Segment |

`wildmatch` 函數搜尋文字並傳回索引，這之後可用於執行其他分析和資料分類。例如，`Acme Corp` 分類為 `Target Segment`，因為這同時滿足 `wildmatch` 函數對 `Region` 和 `Industry` 欄位的搜尋要求。請注意，`wildmatch` 函數不區分大小寫，並且允許使用萬用字元 (`*` 和 `?`)。

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

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

#### 載入指令碼

概述

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

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

載入指令碼包含：

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

  * `Transactions`：包括交易欄位

  * `Transaction_Buckets`：建立兩個新欄位 `Customer` 和 `Color code - Black, Blue, blue, red`。`where` 陳述式從 `wildmatch` 函數載入結果。

載入指令碼

```
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 - Black, Blue, blue, red
Load Transactions table.
Wildmatch returns 1 for 'Black', 'Blue', and 'blue', and 2 for 'Red'. 
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 Black, Blue, blue, Red]
Resident Transactions
Where wildmatch(color_code,'Bl*','R??') > 0;
```

結果

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

* `[Color code - Black, Blue, blue, red]`

* `Customer`

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

| Color code - Black, Blue, blue, red | Customer |
| --- | --- |
| Black | 203521 |
| Black | 3036491 |
| Blue | 2038593 |
| blue | 5646471 |
| Red | 049681 |
| Red | 2038593 |

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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/wildmatch.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

建立下列量值：

* =wildmatch( Cities,'Tor\*','?ton','Beijing','\*urich') ，用來傳回搜尋字串的索引。

* =wildmatch( Cities,'Tor\*','???ton','Beijing','Stockholm','\*urich')，用來傳回搜尋字串的索引。

* =Cities & ' - ' & wildmatch ( Cities, 'Tor\*','???ton','Beijing','Stockholm','\*urich')，用來傳回 Cities 欄位和搜尋字串的索引。

以下表格中的第一個量值會傳回 0 代表 Stockholm，因為 Stockholm 不包括在 wildmatch 函數的運算式清單中。這也傳回 0 代表 Boston，因為 ? 僅符合單一字元。

結果表格

| Cities | wildmatch( Cities,'Tor\*','?ton','Beijing','\*urich') | wildmatch( Cities,'Tor\*','???ton','Beijing','Stockholm','\*urich') | Cities & ' - ' & wildmatch ( Cities, 'Tor\*','???ton','Beijing','Stockholm','\*urich') |
| --- | --- | --- | --- |
| Beijing | 3 | 3 | Beijing - 3 |
| Boston | 0 | 2 | Boston - 2 |
| Stockholm | 0 | 4 | Stockholm - 4 |
| Toronto | 1 | 1 | Toronto - 1 |
| zurich | 4 | 5 | zurich - 5 |

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

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

#### 圖表運算式

概述

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

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

結果

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

* Cities

結果表格顯示預設排序

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

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

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

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

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

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

   =wildmatch( Cities, 'Tor\*','???ton','Beijing','Stockholm','\*urich')

   Cities 欄的排序順序會變更。

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

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

## 瞭解更多資訊

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