You are operating under a misconception; it has nothing to do with SQL Developer.
A CHAR
data-type is a fixed-length string; if you do not provide a string of the full length then Oracle will right-pad the string with space (ASCII 32) characters until it has the correct length.
From the documentation:
CHAR
Datatype
The CHAR
datatype stores fixed-length character strings. When you create a table with a CHAR
column, you must specify a string length (in bytes or characters) between 1 and 2000 bytes for the CHAR
column width. The default is 1 byte. Oracle then guarantees that:
- When you insert or update a row in the table, the value for the
CHAR
column has the fixed length.
- If you give a shorter value, then the value is blank-padded to the fixed length.
- If a value is too large, Oracle Database returns an error.
Oracle Database compares CHAR
values using blank-padded comparison semantics.
To solve this, do not use CHAR
for variable length strings and use VARCHAR2
instead.
VARCHAR2
and VARCHAR
Datatypes
The VARCHAR2
datatype stores variable-length character strings. When you create a table with a VARCHAR2
column, you specify a maximum string length (in bytes or characters) between 1 and 4000 bytes for the VARCHAR2
column. For each row, Oracle Database stores each value in the column as a variable-length field unless a value exceeds the column's maximum length, in which case Oracle Database returns an error. Using VARCHAR2
and VARCHAR
saves on space used by the table.