# LookUp - 指令碼函數

Lookup() 會查詢已載入的表格，並且傳回的 field\_name 值相當於欄位 match\_field\_name 中第一次出現的值 match\_field\_value。表格可以是目前表格或之前載入的其他表格。

語法：

lookup(field\_name, match\_field\_name, match\_field\_value [, table\_name])

傳回的資料類型： 雙值

引數：

LookUp 引數

| 引數 | 描述 |
| --- | --- |
| field\_name | 傳回值需要的欄位名稱。輸入值必須指定為字串 (例如引號中的常值)。 |
| match\_field\_name | 要在其中查閱 match\_field\_value 之欄位的名稱。 輸入值必須指定為字串 (例如引號中的常值)。 |
| match\_field\_value | 要在 match\_field\_name 欄位中查閱的值。 |
| table\_name | 要在其中查閱值的表格名稱。輸入值必須指定為字串 (如引號中的常值)。<br><br>如果省略 table\_name，則會採用目前表格。 |

資訊備註不含引號的引數會參考目前表格。若要參考其他表格，請將引數含括在單引號中。

限制：

搜尋順序為載入順序，除非表格是複雜運算 (如 join) 的結果，若是如此，順序無法明確定義。field\_name 和 match\_field\_name 必須是相同表格 (以 table\_name 指定) 中的欄位。

如果找不到符合的值，則會傳回 NULL。

範例：

範例資料使用下列形式的 Lookup() 函數：

`Lookup('Category', 'ProductID', ProductID, 'ProductList')`

新增範例指令碼到您的文件中並加以執行。然後至少將結果資料行中所列的欄位新增至您文件中的工作表，以查看結果。

`ProductList:` `Load * Inline [` `ProductID|Product|Category|Price` `1|AA|1|1` `2|BB|1|3` `3|CC|2|8` `4|DD|3|2` `] (delimiter is '|');` ` ` `OrderData:` `Load *, Lookup('Category', 'ProductID', ProductID, 'ProductList') as CategoryID` `Inline [` `InvoiceID|CustomerID|ProductID|Units` `1|Astrida|1|8` `1|Astrida|2|6` `2|Betacab|3|10` `3|Divadip|3|5` `4|Divadip|4|10` `] (delimiter is '|');` ` ` `Drop Table ProductList` ` `

首先載入 ProductList 表格。

Lookup() 函數用來建置 OrderData 表格。如果將第三個引數指定為 ProductID。這是將在 ProductList 的第二個引數 'ProductID' 中查閱值的欄位，如含括的單引號所指示。

函數傳回 'Category' (在 ProductList 表格中) 的值，作為 CategoryID 載入。

drop 陳述式會從資料模型中刪除 ProductList 表格，因為不需要該項目，這會留下 OrderData 表格，並具有下列結果：

範例 1 結果

| ProductID | InvoiceID | CustomerID | Units | CategoryID |
| --- | --- | --- | --- | --- |
| 1 | 1 | Astrida | 8 | 1 |
| 2 | 1 | Astrida | 6 | 1 |
| 3 | 2 | Betacab | 10 | 2 |
| 3 | 3 | Divadip | 5 | 2 |
| 4 | 4 | Divadip | 10 | 3 |

資訊備註 Lookup() 函數是彈性的，可以存取任何先前載入的表格。然而，它與 Applymap() 函數相比較速度較慢。

## 瞭解更多資訊

* [ApplyMap - 指令碼函數](https://help.qlik.com/zh-TW/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/MappingFunctions/ApplyMap.htm)