Condividi tramite


Funzione ER VALUEIN

La funzione VALUEIN determina se l'input specificato corrisponde a qualsiasi valore di una voce specificata nell'elenco specificato. Restituisce un valore BooleanoTRUE se l'input specificato corrisponde al risultato dell'esecuzione dell'espressione specificata per almeno un record dell'elenco specificato. In caso contrario, restituisce il valore BooleanoFALSE.

Sintassi

VALUEIN (input, list, list item expression)

Argomenti

input: Campo

Il percorso valido di un elemento di un'origine dati del tipo Elenco di record. Il valore di questa voce verrà associato.

list: Elenco di record

Il percorso valido di un'origine dati del tipo di dati Elenco di record.

list item expression: Booleano

Un'espressione condizionale valida che indica o contiene un singolo campo dell'elenco specificato da utilizzare per la corrispondenza.

Valori restituiti

Boolean

Il valore Booleano risultante.

Note sull'utilizzo

In generale la funzione VALUEIN viene convertita in un set di condizioni OR . Se l'elenco di condizioni OR è grande e la lunghezza totale massima di un'istruzione SQL potrebbe essere superata, prendere in considerazione l'utilizzo della funzione VALUEINLARGE.

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

In alcuni casi, può essere tradotta in un'istruzione di database SQL utilizzando l'operatore EXISTS JOIN.

Nota

Il valore che la funzione VALUEIN restituisce è usato in modo diverso, a seconda che questa funzione venga utilizzata per specificare i criteri di selezione per la funzione FILTER o la funzione WHERE.

Esempio 1

Nel mapping di modelli viene definita l'origine dati List del tipo Campo calcolato. Questa origine dati contiene l'espressione SPLIT ("a,b,c", ",").

Quando viene chiamata un'origine dati, se è stata configurata come espressione VALUEIN ("B", List, List.Value), restituisce TRUE. In questo caso la funzione VALUEIN viene convertita nel seguente set di condizioni: (("B" = "a") or ("B" = "b") or ("B" = "c")), dove ("B" = "b") corrisponde a TRUE.

Quando viene chiamata un'origine dati, se è stata configurata come espressione VALUEIN ("B", List, LEFT(List.Value, 0)), restituisce FALSE. In questo caso la funzione VALUEIN viene convertita nella seguente condizione: ("B" = ""), che non corrisponde a TRUE.

Il limite massimo per il numero di caratteri nel testo di tale condizione è di 32.768 caratteri. Di conseguenza, evitare di creare origini dati che potrebbero superare il limite in fase di esecuzione. Se il limite viene superato, l'applicazione smette di funzionare e viene generata un'eccezione. Ad esempio, questa situazione può verificarsi se l'origine dati viene configurata come WHERE (List1, VALUEIN (List1.ID, List2, List2.ID) e gli elenchi List1 e List2 contengono un ampio volume di record.

In alcuni casi, la funzione VALUEIN viene convertita in un'istruzione di database utilizzando l'operatore EXISTS JOIN. Questo comportamento avviene quando la funzione FILTER viene utilizzata e vengono soddisfatte le seguenti condizioni:

  • L'opzione Chiedi query è disattivata per l'origine dati della funzione VALUEIN che fa riferimento all'elenco di record. Nessuna condizione aggiuntiva verrà applicata a questa origine dati in fase di esecuzione.
  • Nessuna espressione nidificata è configurata per l'origine dati della funzione VALUEIN che fa riferimento all'elenco di record.
  • Una voce dell'elenco della funzione VALUEIN si riferisce a un campo dell'origine dati specificata, non a un'espressione o un metodo di quell'origine dati.

Può essere opportuno di utilizzare questa opzione anziché la funzione WHERE descritta in precedenza in questo esempio.

Esempio 2

Definire le origini dati seguenti nel mapping di modello:

  • L'origine dati In del tipo Record di tabella. Questa origine dati fa riferimento alla tabella Intrastat.
  • L'origine dati Port del tipo Record di tabella. Questa origine dati fa riferimento alla tabella IntrastatPort.

Quando viene chiamata un'origine dati che è stata configurata come l'espressione FILTER (In, VALUEIN(In.Port, Port, Port.PortId), la seguente istruzione SQL viene generata per restituire i record filtrati della tabella Intrastat.

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

Per i campi dataAreaId, l'istruzione SQL finale viene generata usando l'operatore IN.

Esempio 3

Definire le origini dati seguenti nel mapping di modello:

  • L'origine dati Le del tipo Campo calcolato. Questa origine dati contiene l'espressione SPLIT ("DEMF,GBSI,USMF", ",").
  • L'origine dati In del tipo Record di tabella. Questa origine dati fa riferimento alla tabella Intrastat e l'opzione Cross-company è attivata.

Quando viene chiamata un'origine dati che è stata configurata come l'espressione FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value), l'istruzione SQL finale contiene la condizione seguente.

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

Risorse aggiuntive

Funzioni logiche

Funzioni VALUEINLARGE