У меня есть таблица Colors
в Oracle с такими данными, как:
ID Color Ranges (nvarchar2!)
-- ----- -------------------------
1 Blue 1-9,23.5-25.1,27.11,99.14
2 Red 4
3 Green 4.44-5.3
4 Black 18-22,101
Как вы можете догадаться, столбец Ranges
представляет некоторые числа и диапазоны чисел.
Я не могу сохранить диапазоны в некоторых других таблицах (например, RangesTable
с ColorID
, MinVal
, MaxVal
), но я могу нормализовать этот Ranges
-столбец (всегда отсортировано , или представление одиночных чисел в виде диапазонов ("4-4
" вместо "4
") или что-то в этом роде).
Проблема: я ищу способ запросить мой Oracle в соответствии с этим полем, спрашивая его: Какие цвета (или идентификаторы...) у меня есть, что его диапазоны содержат 5 ? (ответ: синий и зеленый) или Какой цвет перекрывает диапазон "5–6"? (ответ снова: синий [1–9] и зеленый [4,44–5,3]. ]).
Как это сделать? (Думаю, Regex здесь не поможет...).
Имеет ли смысл писать в БД функцию, способную разбивать эти диапазоны и искать в них? Любое другое предложение?
Благодарю вас!