Postgres bpchar

When it comes to programming or coding, you may use many data types in your codes, i.e., strings, integers, characters, etc. These data types have their uses and can be utilized in different situations within the code. Just like many other programming platforms, the database also uses the data types for storing the different types of data, i.e., int, character, string, text, Boolean, varchar, etc. The “bpchar” is the abbreviation of “blank padded character”. As the name suggests, it must be something related to character data type. We have discussed the “bpchar” and its uses in the PostgreSQL database. Let’s take a fresh start then.

Character(n) Vs Varchar(n):

MySQL database supports two main character data types, i.e., varchar(n) and char(n). To understand “bpchar” fully, we must need to go through both varchar(n) and char(n) data types by comparison. Both varchar(n) and char(n) data types can store the values up to the “n” length of characters. Let’s say, If you have a table with one column of char(n) data type and the other is varchar(n) data type, then you can only store up to length “n” in those columns. Adding more characters in a column than the specified length will lead you to an error in execution.

What about adding characters less than the specified length for such data type columns? Varchar(n) has a fixed, variable length, and it will only give space to data that is required, i.e., if a variable, fixed-length is 10 and the user has added a value of 5 characters, it will only give a space of 5 characters and not more than that. This means varying character data types can modify the space up to its requirements. For character(n) data type, it has a fixed length. This means if the column has a length set to 10, it will give the space of 10 characters even though the data entered by a user contains fewer characters than the specified length.

Bpchar (Blank Padded Character):

“Bpchar” is a little different. The blank padded character is the concept of PostgreSQL, or Oracle used for character data type, i.e., char(n). You can say that it is an inside name for the data type char(n). As we know, blank means empty or hollow. Just like that, a blank padded character means to add space, but where to add? We will discuss this in the upcoming explanation. If the characters added by a user in the column of char(n) type are shorter than the specified length “n”, it will give you whole “n” space. The extra space will be space-padded, i.e., filled with space. Adding a shorter string for varchar(n) will only assign you the required space. On the other hand, if a user has added a value in character(n) or varchar(n) column and more than the specified length, the PostgreSQL database will store it up to the “n” length discarding the extra spaces without throwing an error. Let’s take a look at an example to understand the concept of the blank_padding character more briefly.


Let’s open your pgAdmin GUI of PostgreSQL database using the Windows 10 desktop search bar. Add your server password and expand the database section. Click on the database of your choice and tap on the icon of the query tool. Let’s first create a table of name “test” containing two columns, “cname” and “vname” using the CREATE TABLE command. The column “cname” is a character(n) data type of length 20, and column “vname” is of varchar(n) data type with length 20. After running this query, a table has been created.

We used the INSERT INTO instruction to add a single record of the same length in both columns. We concatenate two strings together with the “||” sign.

Let’s select both the columns of table “test” and their lengths in separate columns fetched by the function “length”. We have shown a single record of length 8 for both columns on this query execution.

Let’s insert another record in both columns. This time, we have been adding extra character values for both columns using the INSERT INTO command. As we already know, adding more characters than the specified length for a character(N) will lead to an error, as it did below.

Let’s reduce the characters for the “cname” column of the “character(n)” type and again execute this query. It will again throw an exception.

To avoid this error, we have reduced the characters to the specified length or less for columns “cname” and “vname” to insert the values. The query worked and inserted the record this time.

On using the SELECT instruction, we have been fetching the “cname” and “vname” columns along with their lengths in the other columns. It shows that we have added 10 character values for the “cname” column and 16 character values for the “vname” column. In the case of”vname”, the total space of 16 characters has been assigned to the value while the “cname” value has been assigned a space of 20 characters even though it is saving 10 characters only.

Let’s try out with space values now. We have been adding space of length more than 20 characters as value to both columns using the INSERT INTO command as below. It has been successful as per the output.

Using the same SELECT instruction, we have got the updated table again. Even though the value for both columns was more than 20 characters, still the “vname” column has saved only 20 character space values. Meanwhile, the “cname” column does not take space as a value and uses it as a blank padded. Therefore, showing 0 as the length of a value.

Uses of Bpchar Data Type:

There comes a situation when you have to make up an external connection with your database. This external connection may use a different sort of data type instead of using the same as your database. Let’s say you want to connect your PostgreSQL database with Spotify or consider the “Dremio” cloud server. You need to fetch the data from the PostgreSQL database and use it on the Spotify platform, and the “Dremio” cloud server can be used as a database cache for many types of data types. Therefore, you need to map the string data type of Spotify against the “bpchar” data type of the PostgreSQL database and map your “postgresql” database data to “dremio” data. You can say that the string data type in Spotify is an alternative for the “bpchar” of the PostgreSQL database. Dremio supports the mapping of “bpchar” to varchar of Dremio, char data type to varchar, bit to Boolean, serial to int, and many more like that.


Today’s article was all about the “bpchar” data type, i.e., blank padded character. To understand the concept of “bpchar”, we have gone through the comparison between character(n) and varchar(n) data types thoroughly. We have also discussed how the blank padded character works for a character(n) when the characters have been added more than the specified length, less than the specified length, and spaces have been added to the columns.

About the author

Aqsa Yasin

I am a self-motivated information technology professional with a passion for writing. I am a technical writer and love to write for all Linux flavors and Windows.