×


How does Alphanumeric Sorting work in PostgreSQL ?

Our PostgreSQL Support team is available to answer your questions and provide guidance on alphanumeric sorting in PostgreSQL.

Alphanumeric sorting is a way of sorting strings that contain both letters and numbers. 



In PostgreSQL, there are two ways to do alphanumeric sorting:

  • Natural sorting
  • Custom sorting


What is Alphanumeric Sorting in PostgreSQL ?

We are going to delve into alphanumeric sorting in PostgreSQL today. This sort of sorting arranges alphanumeric values in a specific order, which is done by a lexicographic sorting order, where the ASCII/Unicode character codes are taken into account.


Alphanumeric sorting may not always give us the desired order when values include both letters and numbers; however, we can apply different techniques to create alphanumeric sorting in PostgreSQL that meets our specific needs as provided below:


1. Natural sorting

This involves organizing alphanumeric values in an order that takes into account the numerical order present in the value. If we were to look at the values "A1", "A10", and "A2", they would be sorted as "A1", "A2", and "A10".

This task is achieved through the natsort extension. Before we can use PostgreSQL's natural sorting function in our queries, we must install and enable the extension.


Let us investigate an example that utilizes the natsort extension for alphanumeric sorting:

-- Install the natsort extension if it is not already in existence
CREATE EXTENSION IF NOT EXISTS natsort;
-- Utilize the natsort function to accomplish alphanumeric sorting
SELECT column_name FROM table_name ORDER BY natsort(column_name);


2. Custom Sorting

If natural sorting is not suitable for a given scenario, custom sorting can be used to define a particular order by utilizing the ORDER BY clause in an SQL query. This allows us to assign weights to different characters or character sets, so that the desired sorting order can be created. 


For example, as you can see below, You can select to prioritize certain numbers or letters above others:

SELECT column_name
FROM table_name
ORDER BY
CASE
WHEN column_name ~ '^\d' THEN 0 -- Numbers first
WHEN column_name ~ '^\D' THEN 1 -- Letters next
END,
column_name;

In this case, the query uses a CASE statement to give values beginning with a digit (\d) a weight of 0 and values beginning with a non-digit (\D) a weight of 1. The ORDER BY clause then orders the values according to this custom weighting.


Ultimately, we must decide on a strategy to employ for alphanumeric sorting in PostgreSQL - either the natsort extension or the ORDER BY clause with custom sorting logic. The decision we make should be based on the requirements of our application and the desired sorting order of our alphanumeric values.


[ Need help with another PostgreSQL problem? Our team is here 24/7. ]


Conclusion

Here, you will learn how our Support Techs walked us through the steps to activate alphanumeric sorting in PostgreSQL.

In fact, Alphanumeric sorting is a powerful tool that can be used to sort strings that contain both letters and numbers. PostgreSQL provides two ways to do alphanumeric sorting: natural sorting and custom sorting. 

Natural sorting is the default sorting method, and it works by respecting the numerical order within the value. 

Custom sorting allows us to specify a custom sorting order for strings.