У меня есть таблица телефонных номеров с сохранением номера телефона как varchar (20). У меня есть требование реализовать поиск по обоим целым числам, но также и по последней части числа, поэтому типичный запрос будет:
SELECT * FROM PhoneNumbers WHERE Number LIKE '%1234'
Как поместить индекс в столбец Number
, чтобы сделать этот поиск эффективным? Есть ли способ создать индекс, который сортирует записи по перевернутой строке? Другой вариант может состоять в том, чтобы поменять числа перед их сохранением, что приведет к следующим запросам:
SELECT * FROM PhoneNumbers WHERE ReverseNumber LIKE '4321%'
Однако это потребует от всех пользователей базы данных всегда переворачивать строку. Эту проблему можно решить, сохранив как нормальное, так и обратное число и обновив обратный номер триггером при вставке / обновлении. Но такое решение не очень элегантно.
Любые другие предложения?