Explain Codes LogoExplain Codes Logo

Strip last two characters of a column in MySQL

sql
join
best-practices
performance
Alex KataevbyAlex Kataev·Mar 7, 2025
TLDR

To remove the last two characters from a column in MySQL, you can use a combination of the LEFT and CHAR_LENGTH functions:

SELECT LEFT(column_name, CHAR_LENGTH(column_name) - 2) FROM table_name;

These functions allow you to trim the specific column in question by calculating its length, then preserving everything apart from the last two characters in each row.

Deconstructing the solution

Safeguarding your string operations

Performing operations on strings requires careful handling of the data. If your data is shorter than anticipated, removing characters blindly may give rise to unexpected outcomes or errors. The below snippet illustrates how to ensure safe trimming:

SELECT CASE WHEN CHAR_LENGTH(column_name) > 2 THEN LEFT(column_name, CHAR_LENGTH(column_name) - 2) ELSE column_name // "Safety first!", as they say. END as trimmed_column FROM table_name;

Why haven't we employed TRIM?

You might be thinking: why not simply use the TRIM function? TRIM is designed to eliminate specified prefixes or suffixes; but it is not built to chop off by length. Hence, it could potentially remove more occurrences than you intend, if the characters are not unique to the end. So, we say "No, thank you!" to TRIM.

Pacing and Performance

Working with large datasets can make this operation a heavy task, since calculating CHAR_LENGTH will be necessary for each row. Always remember to benchmark these operations and take into account the load on your database server. After all, "Slow and steady wins the race."

Real-world scenarios and examples

Seeking alternatives? Try SUBSTRING

Apart from the LEFT function, you could also employ the SUBSTRING function:

SELECT SUBSTRING(column_name, 1, CHAR_LENGTH(column_name) - 2) FROM table_name;

So yes, there's more than one way to skin a cat (not literally, of course)!

Want better portability? Adhere to ANSI standards

Abiding by ANSI-standard SQL syntax ensures that your code is more portable and establishes improved cross-database compatibility. Because, who doesn't like to play well with others?

NULL-proof your query

As they say, "Expect the unexpected." Make sure your query handles NULL values properly to avoid any surprises:

SELECT COALESCE(LEFT(column_name, CHAR_LENGTH(column_name) - 2), '') FROM table_name WHERE column_name IS NOT NULL;

Ensuring correctness - Test Run!

Always test your SQL queries with different input strings to ensure the accuracy of your results. After all, nobody likes nasty surprises!

Handling your curve balls

Watch out for empty bottles

If a string is empty or shorter than the number of characters you would like to remove, you could wind up with an empty result or even an error. Prevent this potentially embarrassing situation with the case check we used earlier.

Be multilingual friendly

Remember that CHAR_LENGTH counts characters, not bytes. For multibyte character sets, like utf8mb4, use CHAR_LENGTH instead of LENGTH to avoid mixing up bytes with characters. After all, we live in a diverse world.

Be mindful of collations

Different collations and character sets in MySQL can affect your string functions' behavior. Always make sure you're working within the right context. Because, context matters.