sql >> Databasteknik >  >> RDS >> Oracle

Bästa sättet att jämföra VARCHAR2 med CHAR

Som table1.value kolumnen är indexerad, du vill inte manipulera det för jämförelsen eftersom det skulle förhindra att indexet används. Så du måste ändra värdet du letar upp:

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

Oracle kommer dock att göra det implicit med frågan du visade och kommer fortfarande att använda indexet. Och samma sak om du går med i borden, men om du padderar eller trimmar under sammanfogningen beror på vilket bord som är föraren:

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

Eller:

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



  1. Snabbaste sättet att få XAMPP eller WAMP upp på Win7 64-bitars?

  2. En enkel introduktion till att använda MySQL på Linux-terminalen

  3. DATEDIFF-funktion i Oracle

  4. 2 sätt att returnera rader som endast innehåller alfanumeriska tecken i PostgreSQL