

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Espressioni, operatori e funzioni di condizione e di filtro in DynamoDB
<a name="Expressions.OperatorsAndFunctions"></a>

Per manipolare i dati in una tabella DynamoDB, è possibile utilizzare le operazioni `PutItem`, `UpdateItem` e `DeleteItem`. Per le operazioni di manipolazione dei dati, puoi specificare un'espressione di condizione per determinare quale elemento deve essere modificato. Se l’espressione condizionale restituisce true, l’operazione ha esito positivo. In caso contrario, l'operazione non va a buon fine.

In questa sezione sono descritte le funzioni e le parole chiave integrate per scrivere espressioni di condizione ed espressioni di filtro in Amazon DynamoDB. Per informazioni più dettagliate sulle funzioni e sulla programmazione con DynamoDB, consulta [Programmazione con DynamoDB e AWS SDKs](Programming.md) e [DynamoDB API Reference](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/).

**Topics**
+ [Sintassi per le espressioni di filtro e condizioni](#Expressions.OperatorsAndFunctions.Syntax)
+ [Realizzazione di confronti](#Expressions.OperatorsAndFunctions.Comparators)
+ [Funzioni](#Expressions.OperatorsAndFunctions.Functions)
+ [Valutazioni logiche](#Expressions.OperatorsAndFunctions.LogicalEvaluations)
+ [Parentesi](#Expressions.OperatorsAndFunctions.Parentheses)
+ [Priorità nelle condizioni](#Expressions.OperatorsAndFunctions.Precedence)

## Sintassi per le espressioni di filtro e condizioni
<a name="Expressions.OperatorsAndFunctions.Syntax"></a>

Nel seguente riepilogo della sintassi, an *operand* può essere il seguente: 
+ Un nome di attributo di primo livello, ad esempio `Id`, `Title`, `Description` o `ProductCategory`
+ Un percorso di documento che fa riferimento a un attributo nidificato

```
condition-expression ::=
      operand comparator operand
    | operand BETWEEN operand AND operand
    | operand IN ( operand (',' operand (, ...) ))
    | function
    | condition AND condition
    | condition OR condition
    | NOT condition
    | ( condition )

comparator ::=
    =
    | <>
    | <
    | <=
    | >
    | >=

function ::=
    attribute_exists (path)
    | attribute_not_exists (path)
    | attribute_type (path, type)
    | begins_with (path, substr)
    | contains (path, operand)
    | size (path)
```

## Realizzazione di confronti
<a name="Expressions.OperatorsAndFunctions.Comparators"></a>

Utilizza questi comparatori per confrontare un operando con un singolo valore:
+ `a = b`— Vero se *a* è uguale a. *b*
+ `a <> b`— Vero se non *a* è uguale a*b*.
+ `a < b`— Vero se *a* è minore di*b*.
+ `a <= b`— Vero se *a* è minore o uguale a*b*.
+ `a > b`— Vero se *a* è maggiore di*b*.
+ `a >= b`— Vero se *a* è maggiore o uguale a*b*.

Utilizza le parole chiave `BETWEEN` e `IN` per confrontare un operando con un intervallo di valori o con un elenco enumerato di valori:
+ `a BETWEEN b AND c`— Vero se *a* è maggiore o uguale a *b* e minore o uguale a*c*.
+ `a IN (b, c, d) `— Vero se *a* è uguale a qualsiasi valore nell'elenco, ad esempio qualsiasi di *b**c*, o. *d* L'elenco può contenere fino a 100 valori separati da virgole.

## Funzioni
<a name="Expressions.OperatorsAndFunctions.Functions"></a>

Utilizza le seguenti funzioni per determinare se un attributo è presente in un elemento o per valutare il valore di un attributo. I nomi di funzione rispettano la distinzione tra lettere maiuscole e minuscole. Per un attributo nidificato, è necessario fornire l'intero percorso del documento.


****  

| Funzione | Description | 
| --- | --- | 
|  `attribute_exists (path)`  | True se l'elemento contiene l'attributo specificato da `path`. Esempio: Verifica se un elemento nella tabella `Product` ha un'immagine di vista laterale. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html)  | 
|  `attribute_not_exists (path)`  | True se l'attributo specificato da `path` non è presente nell'elemento. Esempio: Verifica se un elemento ha un attributo `Manufacturer`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html)  | 
|  `attribute_type (path, type)`  |  True se l'attributo del percorso specificato è di un particolare tipo di dato. Il parametro `type` deve essere uno dei seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html) È necessario utilizzare un valore di attributo di espressione per il parametro `type`. Esempio: Verifica se l'attributo `QuantityOnHand` è del tipo List. In questo esempio, `:v_sub` è un segnaposto per la stringa `L`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html) È necessario utilizzare un valore di attributo di espressione per il parametro `type`.   | 
|  `begins_with (path, substr)`  |  True se l'attributo specificato da `path` inizia con una particolare sottostringa. Esempio: Verifica se i primi caratteri dell'URL dell'immagine di vista frontale sono `http://`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html) Il valore di attributo di espressione `:v_sub` è un segnaposto per `http://`.  | 
|  `contains (path, operand)`  | True se l'attributo specificato da `path` è uno dei seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html) Se l'attributo specificato da `path` è `String`, `operand` deve essere `String`. Se l'attributo specificato da `path` è un `Set`, l'`operand` deve essere il tipo di elemento del set. Il percorso e l'operando devono essere distinti. Vale a dire, `contains (a, a)` restituisce un errore. Esempio: Verifica se l'attributo `Brand` contiene la sottostringa `Company`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html) Il valore di attributo di espressione `:v_sub` è un segnaposto per `Company`. Esempio: Verifica se il prodotto è disponibile in rosso. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html) Il valore di attributo di espressione `:v_sub` è un segnaposto per `Red`. | 
|  `size (path)`  | Restituisce un numero che rappresenta le dimensioni di un attributo. I seguenti sono tipi di dati validi per l'utilizzo con `size`.  Se l'attributo è di tipo `String`, `size`restituisce la lunghezza della stringa. Esempio: Verifica se la stringa `Brand` è inferiore o uguale a 20 caratteri. Il valore di attributo di espressione `:v_sub` è un segnaposto per `20`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html)  Se l'attributo è di tipo `Binary`, `size` restituisce il numero di byte nel valore attributo. Esempio: supponi che l'elemento `ProductCatalog` abbia un attributo di tipo binario denominato `VideoClip`, che contiene un breve video del prodotto in uso. L'espressione seguente verifica se `VideoClip` supera i 64.000 byte. Il valore di attributo di espressione `:v_sub` è un segnaposto per `64000`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html)  Se il tipo di dati dell'attributo è `Set`, `size` restituisce il numero di elementi nell'insieme.  Esempio: Verifica se il prodotto è disponibile in più di un colore. Il valore di attributo di espressione `:v_sub` è un segnaposto per `1`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html)  Se il tipo dell'attributo è `List` o `Map`, `size` restituisce il numero di elementi figlio. Esempio: Verifica se il numero di revisioni `OneStar` ha superato una certa soglia. Il valore di attributo di espressione `:v_sub` è un segnaposto per `3`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html)  | 

## Valutazioni logiche
<a name="Expressions.OperatorsAndFunctions.LogicalEvaluations"></a>

Utilizza le parole chiave `AND`, `OR` e `NOT` per eseguire valutazioni logiche. Nell'elenco seguente, *a* e *b* rappresentano le condizioni da valutare.
+ `a AND b`— Vero se *a* e *b* sono entrambi veri.
+ `a OR b`— Vero se una delle due *a* o *b* (o entrambe) sono vere.
+ `NOT a`— Vero se *a* è falso. Falso se *a* è vero.

Di seguito è riportato un esempio di codice di AND in un'operazione.

`dynamodb-local (*)> select * from exprtest where a > 3 and a < 5;`

## Parentesi
<a name="Expressions.OperatorsAndFunctions.Parentheses"></a>

Utilizza le parentesi per modificare la priorità di una valutazione logica. Ad esempio, supponiamo che le condizioni *a* e *b* siano vere e che tale condizione *c* sia falsa. La seguente espressione restituisce true:
+ `a OR b AND c`

Tuttavia, se racchiudi una condizione tra parentesi, verrà valutata per prima. Ad esempio, la seguente espressione restituisce false:
+  `(a OR b) AND c`

**Nota**  
Puoi annidare le parentesi in un'espressione: quelle più interne saranno valutate per prime.

Di seguito è riportato un esempio di codice con parentesi in una valutazione logica.

`dynamodb-local (*)> select * from exprtest where attribute_type(b, string) or ( a = 5 and c = “coffee”);`

## Priorità nelle condizioni
<a name="Expressions.OperatorsAndFunctions.Precedence"></a>

 DynamoDB valuta le condizioni da sinistra a destra utilizzando le seguenti regole di precedenza:
+ `= <> < <= > >=`
+ `IN`
+ `BETWEEN`
+ `attribute_exists attribute_not_exists begins_with contains`
+ Parentesi
+ `NOT`
+ `AND`
+ `OR`