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

Carattere vuoto ignorato nella clausola where

Osservando la documentazione Oracle su literals :

e la documentazione di semantica di confronto riempita in bianco afferma:

Poiché il lato sinistro del confronto è un CHAR(10) e il lato destro è un letterale di testo, quindi viene utilizzata la semantica di confronto riempita in bianco e 'hello ' = 'hello' è vero.

Puoi vederlo nel semplice esempio:

SELECT * FROM DUAL WHERE 'hello    ' = 'hello';

Aggiorna :

[TL;DR] Questo comportamento è apparso in tutte le versioni di Oracle almeno da Oracle 7 (rilasciato nel 1992). Ho smesso di cercare la documentazione sulle versioni più vecchie di due decenni, ma mi aspetto che scoprirai che questo è stato il comportamento nella maggior parte (tutte?) delle versioni.

Ecco la documentazione per le varie versioni: