

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Condição IN
<a name="in_condition-spark"></a>

Uma condição IN testa a associação de um valor em um conjunto de valores ou em uma subconsulta. 

## Sintaxe
<a name="in_condition-synopsis"></a>

```
expression [ NOT ] IN (expr_list | table_subquery)
```

## Argumentos
<a name="in_condition-arguments"></a>

 *expressão*   
Uma expressão numérica, de caractere ou de data e hora que é avaliada em relação a *expr\$1list* ou *table\$1subquery* e deve ser compatível com o tipo de dados daquela lista ou subconsulta. 

 *expr\$1list*   
Uma ou várias expressões delimitadas por vírgula ou um ou mais conjuntos de expressões delimitadas por vírgula entre parênteses. 

 *table\$1subquery*   
Uma subconsulta que avalia em uma tabela com uma ou mais linhas, mas é limitada a somente uma coluna em sua lista de seleção. 

IN \$1 NOT IN   
IN retorna verdadeiro se a expressão é um membro da lista de expressão ou consulta. NOT IN retorna verdadeiro se a expressão não é um membro. IN e NOT IN retornam null e nenhuma linha é retornada nos seguintes casos: Se a *expressão* resulta em nulo; ou se não há valores *expr\$1list* ou *table\$1subquery* correspondentes e pelo menos uma dessas linhas de comparação resulta em null. 

## Exemplos
<a name="in_condition-examples"></a>

As seguintes condições são verdadeiras somente para os valores listados: 

```
qtysold in (2, 4, 5)
date.day in ('Mon', 'Tues')
date.month not in ('Oct', 'Nov', 'Dec')
```

## Otimização para grandes listas IN
<a name="in_condition-optimization-for-large-in-lists"></a>

Para otimizar a performance da consulta, uma lista IN que inclua mais do que 10 valores é internamente avaliada como uma matriz escalar. Listas IN com menos do que 10 valores são avaliadas como uma série de predicados OR. Essa otimização é compatível com os tipos de dados SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, BOOLEAN, CHAR, VARCHAR, DATE, TIMESTAMP e TIMESTAMPTZ. 

Observe a saída EXPLAIN para a consulta para visualizar o efeito desta otimização. Por exemplo: 

```
explain select * from sales
QUERY PLAN
--------------------------------------------------------------------
XN Seq Scan on sales  (cost=0.00..6035.96 rows=86228 width=53)
Filter: (salesid = ANY ('{1,2,3,4,5,6,7,8,9,10,11}'::integer[]))
(2 rows)
```