Udostępnij za pośrednictwem


VALUEIN, funkcja ER

Funkcja VALUEIN określa, czy podane dane wejściowe pasują do którejkolwiek wartości określonego elementu na podanej liście. Zwraca ona wartość logicznąTRUE, jeśli określone dane wejściowe pasują do wyniku uruchamiania określonego wyrażenia dla co najmniej jednego rekord z danej listy. W przeciwnym wypadku zwraca ona wartość logicznąFALSE.

Składnia

VALUEIN (input, list, list item expression)

Argumenty

input: Pole

Prawidłowa ścieżka elementu źródła danych typu Lista rekordów. To z wartością tego elementu będzie dokonywane porównanie.

list: Lista rekordów

Prawidłowa ścieżka elementu źródła danych o typie danych Lista rekordów.

list item expression: Wartość logiczna

Prawidłowe wyrażenie warunkowe, które wskazuje na albo zawiera pojedyncze pole określonej listy, która ma być używana do porównania.

Wartości zwracane

Wartość logiczna

Wyjściowa wartość logiczna.

Uwagi dotyczące użytkowania

Zasadniczo funkcja VALUEIN jest przekształcana na zbiór warunków OR. Jeśli lista warunków OR jest duża, a maksymalna całkowita długość instrukcji SQL mogła zostać przekroczona, należy rozważyć użycie funkcji VALUEINLARGE.

(input = list.item1.value) OR (input = list.item2.value) OR …

W niektórych przypadkach można ją przekształcić na instrukcję SQL bazy danych za pomocą operatora EXISTS JOIN.

Banknot

Wartość zwracana przez funkcję VALUEIN jest stosowana różnie, w zależności od tego, czy funkcja ta jest stosowana do określania kryteriów wyboru funkcji FILTER czy funkcji WHERE.

Przykład 1

W mapowaniu modelu definiujesz źródło danych Lista typu Pole obliczeniowe. To źródło danych zawiera wyrażenie SPLIT ("a,b,c", ",").

Gdy źródło danych jest wywoływane, jeśli zostało skonfigurowane jako wyrażenie VALUEIN ("B", List, List.Value), zwraca wartość TRUE. W tym przypadku funkcja VALUEIN jest przekształcana na następujący zbiór warunków: (("B" = "a") or ("B" = "b") or ("B" = "c")), gdzie ("B" = "b") równa się TRUE.

Gdy źródło danych jest wywoływane, jeśli zostało skonfigurowane jako wyrażenie VALUEIN ("B", List, LEFT(List.Value, 0)), zwraca wartość FALSE. W tym przypadku funkcja VALUEIN jest przekształcana na następujący warunek: , gdzie ("B" = "") nie równa się TRUE.

Górny limit liczby znaków w treści takiego warunku to 32 768 znaków. Z tego względu nie należy tworzyć źródeł danych, które w czasie wykonywania mogą spowodować przekroczenie tego limitu. W przypadku przekroczenia limitu aplikacja przestaje działać i zgłasza wyjątek. Na przykład taka sytuacja może wystąpić, jeśli źródło danych jest skonfigurowane za pomocą wyrażenia WHERE (List1, VALUEIN (List1.ID, List2, List2.ID), a listy List1 i List2 zawierają bardzo dużo rekordów.

W niektórych przypadkach funkcja VALUEIN jest przekształcana na instrukcję bazy danych za pomocą operatora EXISTS JOIN. Takie zachowanie występuje, gdy jest używana funkcja FILTER i są spełnione następujące warunki:

  • Opcja MONITUJ O ZAPYTANIE jest wyłączona w źródle danych funkcji VALUEIN odwołującej się do listy rekordów. W czasie wykonywania do tego źródła danych nie będą stosowane żadne dodatkowe warunki.
  • Nie skonfigurowano żadnych warunków zagnieżdżonych w źródle danych funkcji VALUEIN odwołującej się do listy rekordów.
  • Element listy w funkcji VALUEIN odwołuje się do pola podanego źródła danych, a nie do wyrażenia lub metody tego źródła danych.

Warto rozważyć używanie tej opcji zamiast funkcji WHERE, którą opisano wcześniej w tym przykładzie.

Przykład 2

Definiuje się następujące źródła danych w mapowaniu modelu:

  • Źródło danych In typu Rekordy tabeli. To źródło danych odnosi się do tabeli Intrastat.
  • Źródło danych Port typu Rekordy tabeli. To źródło danych odnosi się do tabeli IntrastatPort.

Gdy zostanie wywołane źródło danych skonfigurowane za pomocą wyrażenia FILTER (In, VALUEIN(In.Port, Port, Port.PortId), zostanie wygenerowana poniższa instrukcja SQL w celu zwrócenia odfiltrowanych rekordów tabeli Intrastat.

select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port

Dla pól dataAreaId zostanie wygenerowana końcowa instrukcja SQL przy użyciu operatora IN.

Przykład 3

Definiuje się następujące źródła danych w mapowaniu modelu:

  • Źródło danych Le typu Pole obliczeniowe. To źródło danych zawiera wyrażenie SPLIT ("DEMF,GBSI,USMF", ",").
  • Źródło danych In typu Rekordy tabeli. To źródło danych odnosi się do tabeli Intrastat z włączoną opcją Między firmami.

Gdy zostanie wywołane źródło danych skonfigurowane za pomocą wyrażenia FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value), końcowa instrukcja SQL zawiera następujący warunek.

Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')

Dodatkowe zasoby

Funkcje logiczne

Funkcje VALUEINLARGE