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

SQL - Perché gli spazi di riempimento quando si confrontano i caratteri?

Stai confondendo i diversi tipi di personaggi e cosa sta succedendo. Quando esegui:

SELECT * from SOME_TABLE where CUSTOMER_NAME = 'Popeye '

Nessuno spazio viene aggiunto "a ogni riga in SOME_TABLE". L'unica domanda è l'ampiezza dei risultati. Questa larghezza è impostata dalle proprietà delle colonne in SOME_TABLE, non da ciò che appare nella clausola WHERE.

Se il tuo CUSTOMER_NAME è dichiarato come valore char(x), la stringa deve avere quella lunghezza. Diciamo che è char(10) e gli assegni 'Popeye'. Il valore ha sei caratteri e questo deve essere riempito a 10, in qualche modo. Lo standard SQL prevede il riempimento sul lato destro, creando il valore 'Popeye ' .

Se vuoi stringhe di lunghezza variabile, usa varchar o varchar2.