Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Melhor maneira de comparar VARCHAR2 com CHAR


Como o table1.value coluna está indexada, você não deseja manipulá-la para a comparação, pois isso impediria que o índice fosse usado. Portanto, você precisará modificar o valor que está procurando:
SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)

O Oracle fará isso implicitamente com a consulta que você mostrou e ainda usará o índice. E o mesmo se você estiver unindo as tabelas, mas se você preencher ou aparar durante a junção depende de qual tabela é o driver:
SELECT table1.ID, table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45', 12)

Ou:
SELECT table1.ID
FROM table2
JOIN table1 ON table1.value = RPAD(table2.value, 12)