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

Bedste måde at sammenligne VARCHAR2 med CHAR

Som table1.value kolonne er indekseret, ønsker du ikke at manipulere det til sammenligningen, da det ville forhindre indekset i at blive brugt. Så du bliver nødt til at ændre den værdi, du slår op:

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

Oracle vil dog gøre det implicit med den forespørgsel, du viste, og vil stadig bruge indekset. Og det samme, hvis du slutter dig til bordene, men om du puder eller trimmer under sammenføjningen afhænger af, hvilket bord der er driveren:

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. Strategi for synkronisering af database fra flere lokationer til en central database og omvendt

  2. Lagring af $date-variablen i mysql-databasen ved hjælp af php

  3. Migrering af ASP.NET-medlemskabsdatabase til SQL Azure

  4. Forståelse af, hvordan man optimerer en forespørgsel via Postgres/rails forklarer data