sql >> Databáze >  >> RDS >> Oracle

Nejlepší způsob, jak porovnat VARCHAR2 s CHAR

Jako table1.value je indexován, nechcete s tím manipulovat pro porovnání, protože by to zabránilo použití indexu. Takže budete muset upravit hodnotu, kterou hledáte:

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

Oracle to udělá implicitně s dotazem, který jste ukázali, a bude stále používat index. A to samé, pokud se připojujete ke stolům, ale to, zda během spojení podložíte nebo oříznete, závisí na tom, který stůl je řidičem:

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

Nebo:

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



  1. Převeďte datový typ časového razítka do unixového časového razítka Oracle

  2. Oracle – více dotazů v jednom výsledku

  3. Jak uložit pole do tabulky?

  4. Zajištění funkčnosti připojení MySQL ve funkci PHP