Bird
Raised Fist0
PostgreSQLquery~5 mins

Character types (char, varchar, text) in PostgreSQL

Choose your learning style10 modes available
Introduction

Character types store text data in a database. They help keep words, names, or any text information organized and easy to find.

Storing fixed-length codes like country codes (e.g., 'USA', 'CAN').
Saving names or descriptions where length can vary, like product names.
Keeping long text like comments or articles.
When you want to limit the size of text to save space or ensure consistency.
Syntax
PostgreSQL
CHAR(n)
VARCHAR(n)
TEXT

CHAR(n) stores fixed-length text, padded with spaces if shorter.

VARCHAR(n) stores variable-length text up to n characters.

TEXT stores variable-length text with no specific limit.

Examples
This creates a table with a fixed 3-character code, a name up to 50 characters, and a long description.
PostgreSQL
CREATE TABLE example (
  code CHAR(3),
  name VARCHAR(50),
  description TEXT
);
Inserts a row with a 3-character code, a name, and a longer text description.
PostgreSQL
INSERT INTO example (code, name, description) VALUES ('USA', 'United States', 'A country in North America.');
Finds rows where the name starts with 'United'.
PostgreSQL
SELECT code, name FROM example WHERE name LIKE 'United%';
Sample Program

This example creates a table for countries with a fixed 3-letter code, a name up to 50 characters, and notes with no length limit. It inserts three countries and then selects all data ordered by the country code.

PostgreSQL
CREATE TABLE countries (
  country_code CHAR(3),
  country_name VARCHAR(50),
  notes TEXT
);

INSERT INTO countries (country_code, country_name, notes) VALUES
('USA', 'United States', 'Located in North America'),
('CAN', 'Canada', 'Known for maple syrup'),
('MEX', 'Mexico', 'Famous for its cuisine');

SELECT country_code, country_name, notes FROM countries ORDER BY country_code;
OutputSuccess
Important Notes

CHAR pads text with spaces to fill the fixed length, so 'USA' stored as CHAR(5) becomes 'USA '.

VARCHAR is more flexible and usually preferred unless you need fixed length.

TEXT can store very long text but does not enforce length limits.

Summary

CHAR(n) stores fixed-length text, padding with spaces if needed.

VARCHAR(n) stores variable-length text up to n characters.

TEXT stores variable-length text with no size limit.

Practice

(1/5)
1. Which PostgreSQL character type stores text with a fixed length, padding with spaces if the input is shorter?
easy
A. CHAR(n)
B. VARCHAR(n)
C. TEXT
D. INT

Solution

  1. Step 1: Understand fixed-length storage

    CHAR(n) stores exactly n characters, padding with spaces if input is shorter.
  2. Step 2: Compare with other types

    VARCHAR(n) stores variable length up to n, TEXT has no limit, INT is numeric.
  3. Final Answer:

    CHAR(n) -> Option A
  4. Quick Check:

    Fixed length with padding = CHAR(n) [OK]
Hint: Fixed length with padding means CHAR(n) [OK]
Common Mistakes:
  • Confusing VARCHAR(n) as fixed length
  • Thinking TEXT has length limit
  • Choosing numeric types by mistake
2. Which of the following is the correct syntax to declare a variable-length character column with a maximum of 50 characters in PostgreSQL?
easy
A. CHAR(50)
B. VARCHAR(50)
C. TEXT(50)
D. STRING(50)

Solution

  1. Step 1: Identify variable-length syntax

    VARCHAR(n) declares variable-length text with max n characters.
  2. Step 2: Check other options

    CHAR(50) is fixed length, TEXT has no length limit, STRING is invalid in PostgreSQL.
  3. Final Answer:

    VARCHAR(50) -> Option B
  4. Quick Check:

    Variable length with max limit = VARCHAR(n) [OK]
Hint: Use VARCHAR(n) for variable length with max size [OK]
Common Mistakes:
  • Using TEXT with length limit (invalid)
  • Confusing CHAR as variable length
  • Using non-existent STRING type
3. Consider the following table and insert statements:
CREATE TABLE users (name CHAR(5));
INSERT INTO users VALUES ('Tom');
SELECT name, LENGTH(name) FROM users;

What will be the output of the SELECT query?
medium
A. name = 'Tom ', length = 5
B. name = 'Tom', length = 3
C. name = 'Tom', length = 5
D. name = 'Tom ', length = 3

Solution

  1. Step 1: Understand CHAR(5) behavior on insert

    CHAR(5) pads 'Tom' with 2 spaces to make length 5.
  2. Step 2: LENGTH function counts all characters including spaces

    LENGTH('Tom ') returns 5 because spaces count.
  3. Final Answer:

    name = 'Tom ', length = 5 -> Option A
  4. Quick Check:

    CHAR pads spaces, LENGTH counts them [OK]
Hint: CHAR pads spaces; LENGTH counts all characters [OK]
Common Mistakes:
  • Assuming LENGTH ignores trailing spaces
  • Thinking CHAR stores variable length
  • Confusing CHAR with VARCHAR behavior
4. You have a table with a column defined as VARCHAR(10). You try to insert a string of 15 characters. What will happen?
medium
A. The string is truncated to 10 characters and inserted
B. The string is padded with spaces to 15 characters
C. An error is raised and insertion fails
D. The string is inserted fully ignoring the limit

Solution

  1. Step 1: Understand VARCHAR(n) length limit enforcement

    VARCHAR(10) limits input to 10 characters strictly.
  2. Step 2: Behavior on exceeding length

    PostgreSQL raises an error if input exceeds declared length.
  3. Final Answer:

    An error is raised and insertion fails -> Option C
  4. Quick Check:

    Exceeding VARCHAR limit causes error [OK]
Hint: Exceeding VARCHAR(n) length causes error, no truncation [OK]
Common Mistakes:
  • Assuming automatic truncation happens
  • Thinking VARCHAR pads with spaces
  • Believing PostgreSQL ignores length limits
5. You want to store user comments of any length without worrying about size limits. Which PostgreSQL data type should you choose and why?
hard
A. INT, because it stores numeric values efficiently
B. CHAR(255), because it fixes length and saves space
C. VARCHAR(255), because it limits length to 255 characters
D. TEXT, because it stores variable-length text with no size limit

Solution

  1. Step 1: Identify requirement for unlimited length

    User comments can be very long, so no fixed or limited length is suitable.
  2. Step 2: Compare data types for length limits

    TEXT stores variable-length text with no size limit, unlike CHAR or VARCHAR.
  3. Step 3: Exclude irrelevant types

    INT is numeric and unsuitable for text storage.
  4. Final Answer:

    TEXT, because it stores variable-length text with no size limit -> Option D
  5. Quick Check:

    No size limit needed = TEXT [OK]
Hint: Use TEXT for unlimited length text storage [OK]
Common Mistakes:
  • Choosing CHAR or VARCHAR with fixed limits
  • Confusing numeric types with text
  • Assuming VARCHAR can store unlimited text
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard