sql >> Base de Datos >  >> RDS >> Oracle

La mejor manera de comparar VARCHAR2 con CHAR

Como table1.value la columna está indexada, no desea manipular eso para la comparación, ya que eso evitaría que se use el índice. Por lo tanto, deberá modificar el valor que está buscando:

SELECT table1.ID FROM table1 WHERE table1.VALUE = RPAD('123-45', 12)

Sin embargo, Oracle lo hará implícitamente con la consulta que mostraste y seguirá usando el índice. Y lo mismo si está uniendo las tablas, pero si rellena o recorta durante la unión depende de qué tabla es el controlador:

SELECT table1.ID, table2.ID
FROM table1
JOIN table2 ON table2.value = RTRIM(table1.value)
WHERE table1.VALUE = RPAD('123-45', 12)

O:

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