Predicado IN
O predicado IN compara um valor ou valores com uma cobrança de valores.
A seleção completa deve identificar um número de colunas que é o mesmo que o número de expressões especificado à esquerda da palavra-chave IN (SQLSTATE 428C4). A seleção completa pode retornar qualquer número de linhas.
- Um predicado IN do formulário:
é equivalente a um predicado básico do formulário:expression IN expressionexpression = expression - Um predicado IN do formulário:
é equivalente a um predicado quantificado da forma:expression IN (fullselect)expression = ANY (fullselect) - Um predicado IN do formulário:
é equivalente a um predicado quantificado da forma:expression NOT IN (fullselect)expression <> ALL (fullselect) - Um predicado IN do formulário:
é equivalente a:expression IN (expressiona, expressionb, ..., expressionk)
onde fullselect no formulário de valores-cláusula é:expression = ANY (fullselect)VALUES (expressiona), (expressionb), ..., (expressionk) - Um predicado IN do formulário:
é equivalente a um predicado quantificado da forma:(expressiona, expressionb,..., expressionk) IN (fullselect)
Observe que o operando do lado esquerdo desta forma destes predicados é referido como uma linha-valor-expressão.(expressiona, expressionb,..., expressionk) = ANY (fullselect)
Os valores para expression1 e expression2 ou a coluna de fullselect1 no predicado IN devem ser compatíveis. Cada campo da linha-valor-expressão e sua coluna correspondente de fullselect2 no predicado IN deve ser compatível. As regras para tipos de dados de resultados podem ser usadas para determinar os atributos do resultado utilizado na comparação.
Os valores para as expressões no predicado IN (incluindo colunas correspondentes de um fullselect) podem ter páginas de código diferentes. Se uma conversão for necessária, a página de código será determinada aplicando regras para conversões de sequência para a lista IN primeiro, e depois para o predicado, usando a página de código derivada para a lista IN como segunda opere.
Exemplos
DEPTNO IN ('D01', 'B01', 'C01') EMPNO IN (SELECT EMPNO FROM EMPLOYEE WHERE WORKDEPT = 'E11')Exemplo 3: Dado as informações a seguir, este exemplo avalia para true se o valor específico na linha da coluna COL_1 corresponde a qualquer um dos valores da lista:
| Expressões | Tipo | Página de Códigos |
|---|---|---|
| COL_1 | coluna | 850 |
| HV_2 | variável de host | 437 |
| HV_3 | variável de host | 437 |
| CON_1 | constante | 850 |
COL_1 IN (:HV_2, :HV_3, CON_4)as duas variáveis de host serão convertidas para a página de código 850, com base nas regras para conversões de cordas. YEAR(EMENDATE) IN (YEAR(CURRENT DATE),
YEAR(CURRENT DATE - 1 YEAR),
YEAR(CURRENT DATE - 2 YEARS)) (ID, DEPT) IN (SELECT MANAGER, DEPTNUMB FROM ORG)