Oracle
 sql >> Database >  >> RDS >> Oracle

Il modo migliore per confrontare VARCHAR2 con CHAR

Come table1.value colonna è indicizzata, non si desidera manipolarla per il confronto in quanto ciò impedirebbe l'utilizzo dell'indice. Quindi dovrai modificare il valore che stai cercando:

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

Oracle lo farà in modo implicito con la query che hai mostrato e utilizzerà comunque l'indice. E lo stesso se stai unendo i tavoli, ma se riempi o rifili durante l'unione dipende da quale tavolo è il driver:

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

Oppure:

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