# wildmatch 脚本和图表功能

wildmatch 函数用于将第一个参数与所有以下参数进行比较，并返回匹配表达式的数量。它允许在比较字符串中使用通配符（ \* 和 ?）。 \* 匹配任何字符序列。? 匹配任何单个字符。该比较不区分大小写，对日语平假名和片假名字符系统不会进行区分。

语法：

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

返回数据类型： 整数

如果您想要使用比较而不使用通配符，可以使用 match 或 mixmatch 函数。

参数

| 参数 | 描述 |
| --- | --- |
| str | 要计算的字符串。 |
| expr1 | 用于检查有效的数字呈现形式的第一个表达式。 |
| expr2 | 用于检查有效的数字呈现形式的第二个表达式。 |
| expr3 | 用于检查有效的数字呈现形式的第三个表达式。 |

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `wildmatch( ColorCode,'black','*Blue*' )` | 如果 `ColorCode` 的值是 `Black`，则该表达式返回 `1`；如果 `ColorCode` 的值是 `Blue` 或 `Light Blue` 或 `blue`，则该表达式返回 `2`。 |
| ` wildmatch( Cities,'toronto','Boston','Beijing','Zurich')  ` | 此表达式返回与 `Cities` 字段中的值匹配的项的索引。 |

本主题中的一些示例使用内联加载。[使用内联加载来加载数据](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)

## 示例 - 使用 wildmatch 对产品进行分类

[](https://help.qlik.com/en-US/sense/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/sense/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/sense/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/sense/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 字段以及搜索字符串的索引。

下表中的第一个度量对 Stockholm 返回 0，因为 wildmatch 函数中的表达式列表中不包括 Stockholm。对于 Boston ，它也返回 0 ，因为 ? 只匹配单个字符。

结果表

| 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/sense/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-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/match.htm)
* [mixmatch 脚本和图表功能](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFunctions/mixmatch.htm)