I have an integer column and I want to find numbers that start with specific digits.
For example they do match if I look for ‘123’:
1234567
123456
1234
They do not match:
23456
112345
0123445
Is the only way to handle the task by converting the Integers into Strings before doing string comparison?
Also I am using Postgre regexp_replace(text, pattern, replacement) on numbers which is very slow and inefficient way doing it.
The case is that I have large amount of data to handle this way and I am looking for the most economical way doing this.
PS. I am not looking a way how to cast integer into string.
As a standard principle (IMHO), a database design should use a number type if and only if the field is:
If it’s a number in some other context – phone numbers, IP addresses etc – store it as text.
This sounds to me like your ‘123’ is conceptually a string that just happens to only contain numbers, so if possible I’d suggest altering the design so it’s stored as such.
Otherwise, I can’t see a sensible way to do the comparison using it as numbers, so you’ll need to convert it to strings on the fly with something like