Я думаю, что следующий запрос должен помочь:
SELECT col5
FROM mytable
WHERE
(
col3 IS NULL
OR (col3 = '<' AND @input < col1)
OR (col3 = '>' AND @input > col1)
) AND (
col4 IS NULL
OR (col4 = '<' AND @input < col2)
OR (col4 = '>' AND @input > col2)
)
Демонстрация на DB Fiddle с вашими данными выборки:
ОБЪЯВИТЬ @input INTEGER;
SET @input = 74;
SELECT col5
FROM mytable
WHERE
(
col3 IS NULL
OR (col3 = '<' AND @input < col1)
OR (col3 = '>' AND @input > col1)
) AND (
col4 IS NULL
OR (col4 = '<' AND @input < col2)
OR (col4 = '>' AND @input > col2)
)
GO
| col5 |
| :------- |
| Approved |
NB. В ваших интервалах есть несоответствия. Например, значение от 20 до 50 обычно совпадает для двух записей (0-75 и 20-50).