メモ
コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engageコミュニティに参加し、最新のディスカッションに参加するには、 Finance and Operations Viva Engage Community へのアクセス権フォームに入力し、参加するコミュニティを選択します。
VALUEIN関数は、指定した入力が、指定したリスト内の指定された項目の値と一致するかどうかを確認します。 指定した入力が、指定したリストの少なくとも 1 つのレコードに対して指定した式を実行した結果と一致する場合は TRUE を 返します。 それ以外の場合、FALSE を返します。
構文
VALUEIN (input, list, list item expression)
引数
input: フィールド
レコード リスト タイプのデータ ソースの項目の有効なパス。 この項目の値が一致します。
list: レコード リスト
レコード リスト データ型のデータ ソースの有効なパス。
list item expression: ブール値
照合に使用する指定したリストの 1 つのフィールドを指す、または含む有効な条件式。
戻り値
ブール型
結果ブール値。
使用上の注意
一般に、 VALUEIN 関数は一連の OR 条件に変換されます。
OR 条件の一覧が大きく、SQL ステートメントの最大長を超える場合は、VALUEINLARGE 機能を使用することを検討してください。
(input = list.item1.value) OR (input = list.item2.value) OR …
場合によっては、 EXISTS JOIN 演算子を使用してデータベース SQL ステートメントに変換されます。
メモ
VALUEIN関数を使用してFILTER関数またはWHERE関数の選択基準を指定するかどうかに応じて、VALUEIN関数が返す値の使用方法が異なります。
例 1
モデル マッピングで、計算済フィールド タイプのリスト データ ソースを定義します。 このデータ ソースには、式 SPLIT ("a,b,c", ",") が含まれています。
データ ソースを呼び出すときに、 VALUEIN ("B", List, List.Value) 式として構成すると、 TRUE が返されます。 この場合、 VALUEIN 関数は次の条件のセットに変換されます。 (("B" = "a") or ("B" = "b") or ("B" = "c"))、 ("B" = "b") は TRUE と等しくなります。
データ ソースを呼び出すときに、 VALUEIN ("B", List, LEFT(List.Value, 0)) 式として構成すると、 FALSE が返されます。 この場合、 VALUEIN 関数は次の条件に変換されます。 ("B" = "")、 TRUE と等しくない。
このような条件のテキストの文字数の上限は 32,768 文字です。 そのため、実行時にこの制限を超える可能性があるデータ ソースを作成しないでください。 制限を超過した場合は、アプリケーションの動作が停止し、例外が発生します。 たとえば、この状況は、データ ソースが WHERE (List1, VALUEIN (List1.ID, List2, List2.ID) として構成され、List1 および List2 リストに大量のレコードが含まれているときに生じます。
場合によっては、 VALUEIN 関数は、 EXISTS JOIN 演算子を使用してデータベース ステートメントに変換します。 この動作は、FILTER 関数が使用され、次の条件が満たされているときに発生します:
-
ASK FOR QUERY オプションは、レコードのリストを参照する
VALUEIN関数のデータ ソースに対してオフになっています。 実行時にこのデータ ソースに追加の条件は適用されません。 - 入れ子になった式は、レコードのリストを参照する
VALUEIN関数のデータ ソース用に構成されません。 -
VALUEIN関数のリスト項目は、指定されたデータ ソースの式またメソッドではなく、指定されたデータ ソースのフィールドを参照します。
この例の前半で説明した WHERE 関数の代わりにこのオプションを使用することを検討してください。
例 2
モデル マッピングでは、次のデータ ソースを定義します。
- テーブル レコード タイプの In データ ソース。 このデータ ソースは、イントラスタット テーブルを参照します。
- テーブル レコード タイプのポート データ ソース。 このデータ ソースは、IntrastatPort テーブルを参照します。
FILTER (In, VALUEIN(In.Port, Port, Port.PortId))式として構成したデータ ソースを呼び出すと、次の SQL ステートメントが生成され、Intrastat テーブルのフィルター処理されたレコードが返されます。
select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port
dataAreaId フィールドの場合、最終的な SQL ステートメントでは IN 演算子が使用されます。
例 3
モデル マッピングでは、次のデータ ソースを定義します。
-
計算済フィールド タイプの Le データ ソース。 このデータ ソースには、式
SPLIT ("DEMF,GBSI,USMF", ",")が含まれています。 - テーブル レコード タイプの In データ ソース。 このデータ ソースはイントラスタット テーブルを参照し、会社間オプションが有効になっています。
FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value))式として構成したデータ ソースを呼び出すと、最終的な SQL ステートメントには次の条件が含まれます。
Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')