Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to replace numbers in SQL

My database has a lot of descriptions which are similar to each other and I want to group them together, but because of different numbers, they are not being grouped together. So is there any way I can mask the numbers and make the descriptions same.

We can do that in Excel or Notepad++, using find and replace, so anyway in which it would be possible in SQL. I know we can replace in SQL using the function

REPLACE('column', 'new input', 'to be replaced')

But how to do it for regex, as the numbers can be in any combination.

I am using PostgreSQL.

Some inputs :-

sample input description 123
sample input description 456
this is another description 678
this is another description 999

I would like to convert them to:-

sample input description xxx
sample input description xxx
this is another description xxx
this is another description xxx

the numbers can be anywhere.

I am doing it on redshift.

like image 593
Aklank Jain Avatar asked Oct 24 '25 15:10

Aklank Jain


1 Answers

You'd use

regexp_replace(col, '[[:digit:]]+', '#')

in order to replace any number of digits with a single #.

Rextester demo: http://rextester.com/BFSP36237

Use the flag 'g' if multiple numbers can occur in a string:

regexp_replace(col, '[[:digit:]]+', '#', 'g')

Rextester demo: http://rextester.com/WHTJ51233

like image 119
Thorsten Kettner Avatar answered Oct 26 '25 05:10

Thorsten Kettner



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!