У меня есть таблица со следующей структурой в PostgreSQL:
table: phonenumbers
columns: user, cc, number_start, number_stop
user
- это мой идентификатор пользователя, cc
- это код страны, sn_start
- это первый номер диапазона номеров, а sn_stop
- это последний номер диапазона номеров.
Таблица phonenumbers
может содержать несколько диапазонов номеров в пределах одного и того же кода страны, а в некоторых случаях диапазонов номеров вообще нет.
Итак, сначала я должен оштрафовать наибольшее / лучшее совпадение для cc
, а затем наивысшее / наилучшее совпадение для number_start
цикла до number_stop
.
Как выбрать лучшее совпадение для данного числа, напр. 1802569984
Пример данных в таблице может быть:
user, cc, number_start, number_stop
1, 44, null, null
3, 1, null, null
3, 1, 800000000, 900000000
4, 1, 802000000, 803000000
В этом случае следует выбрать user
с идентификатором 4
, так как это наилучшее совпадение.