In this article, we’ll explore the differences between CHAR and VARCHAR in DB2, their storage implications, performance considerations, and how VARCHAR columns map to COBOL host variables.
Understanding the CHAR Data Type in IBM DB2
The CHAR data type is used to store fixed-length character strings. When a column is defined as CHAR(n), DB2 allocates the full length n bytes for every row, regardless of the actual data stored.
Key Characteristics of CHAR
- Fixed-length storage
- Always padded with trailing blanks
- Predictable column size
- Simple internal layout
Example
CHAR(20)
If you store 'IBM', DB2 still uses 20 bytes, padding the remaining 17 bytes with spaces.
When to Use CHAR
- Data with consistent length
- Codes, flags, and identifiers
(e.g.,COUNTRY_CODE,STATUS_FLAG) - Scenarios where fixed formatting is required
Considerations
While CHAR provides consistency, it can waste significant disk space when actual values are shorter than the defined length. This can reduce the number of rows per page and increase I/O.
Understanding the VARCHAR Data Type in DB2
The VARCHAR data type stores variable-length character data, making it more efficient when string lengths vary.
How DB2 Stores VARCHAR
DB2 typically stores:
- The actual character data
- A 2-byte length field indicating the number of bytes used (for columns up to 32 KB)
Key Characteristics of VARCHAR
- Variable-length storage
- Uses only the space required
- Improves storage efficiency
- Allows more rows per data page
Example
VARCHAR(100)
Storing 'test' uses:
- 4 bytes for data
- 2 bytes for length
→ Total: 6 bytes
When to Use VARCHAR
- Names, descriptions, and free-text fields
- Data with unpredictable or varying length
- Tables where storage and I/O efficiency matter
COBOL Mapping for VARCHAR Columns

This structure is required because DB2 needs both the data and its length.
Final Thoughts
Choosing between CHAR and VARCHAR in IBM DB2 directly affects storage efficiency, performance, and application behavior—especially in COBOL‑DB2 environments. While CHAR provides simplicity and predictability, VARCHAR delivers flexibility and better space utilization.
Understanding these differences allows database designers to build scalable, efficient, and maintainable DB2 systems.
Leave a comment