Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Najlepszy sposób na porównanie VARCHAR2 z CHAR

Jako table1.value kolumna jest indeksowana, nie chcesz manipulować nią w celu porównania, ponieważ uniemożliwiłoby to użycie indeksu. Musisz więc zmienić szukaną wartość:

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

Oracle zrobi to jednak niejawnie z wyświetlonym zapytaniem i nadal będzie używać indeksu. I to samo, jeśli dołączasz do stołów, ale to, czy podczas łączenia będziesz dopasowywać, czy przycinać, zależy od tego, który stół jest kierowcą:

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

Lub:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podczas próby załadowania clob do tabeli Oracle ładowanie zbyt wielu rekordów

  2. Oracle:Zwróć wiele wartości w funkcji

  3. 2 sposoby formatowania liczby z wiodącymi zerami w Oracle

  4. Odświeżanie / aktualizowanie ekranu formularza w Oracle D2k Forms 6i

  5. Jak uzyskać pierwsze dwa znaki ciągu w zapytaniu Oracle?