Мелкий пишет:Можно чуть про предметную область? Может, получится подсказать что-нибудь более адекватное.
Буква есть всегда, только одна? По каким правилам её сравнивать?
Решение в лоб:
is_letter_first - bool, начинается ли диапазон с буквы
Пара bigint, в которых первые или последние два десятичных знака (соответственно is_letter_first) отдать под числовой идентификатор соответствующей буквы. Остальные знаки будут хранить собственно число. Начало и конец диапазона, собственно.
Что бы долго не объяснять, это некие медицинские коды процедур вот:
http://en[dot]wikipedia[dot]org/wiki/Cur[dot][dot][dot]ural_Terminology
Там могут быть значения как с буквами, так и без них совсем (т.е. только цифры), но в каждом диапазоне, значение A и B всегда по одной схеме, т.е. если с буквой то оба значения с ней и буква в одинаковом месте, если без буквы, то оба значения без буквы. Суть в том, что при создании жалобы (обращение в страховую), вводится, среди прочего, этот код(ы) , при этом нужно проверять, входит, ли введенный код, в какой либо диапазон, если да, то выполняются некоторые действия.
Пока, самым адекватным решением, мне кажется, приводить все буквы к числам (т.е. 1-26), и хранить их в отдельных полях базы данных, и сравнивать все как десятичные числа.
(Добавление)
Sail пишет:
snikers987, 12345G больше, чем 99999B, или не больше?
больше