Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Der beste Weg, um VARCHAR2 mit CHAR zu vergleichen

Als table1.value Spalte indiziert ist, möchten Sie dies nicht für den Vergleich manipulieren, da dies die Verwendung des Index verhindern würde. Sie müssen also den gesuchten Wert ändern:

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

Oracle wird dies jedoch implizit mit der von Ihnen gezeigten Abfrage tun und weiterhin den Index verwenden. Und das Gleiche gilt, wenn Sie die Tabellen verbinden, aber ob Sie während der Verbindung auffüllen oder trimmen, hängt davon ab, welche Tabelle der Treiber ist:

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

Oder:

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