У меня есть таблица со столбцом "описание", который имеет следующие значения:
- ОПТестМашине
- OPManualTesting
- OP1010
Таким образом, оператор select для получения значений будет просто
SELECT description
FROM operation;
Я хочу извлечь число «1010» (или любую строку, которая соответствует критерию substr()) и преобразовать «найденную строку» в целое число, если это возможно.
Итак, я придумал это:
SELECT to_number(substr(description, 3, 4))
FROM operation
WHERE regexp_like(substr(description, 3, 4), '^\d+(\.\d+)?$', '')
Результат простой и понятный: "1010"
Это работает очень хорошо для меня.
Теперь самое сложное для меня: я хочу использовать результат substr() в предложении WHERE.
Что-то вроде этого:
SELECT to_number(substr(description, 3, 4))
FROM operation
WHERE regexp_like(substr(description, 3, 4), '^\d+(\.\d+)?$', '')
AND substr(description, 3, 4) < 2000;
Когда я это делаю, я получаю сообщение об ошибке «Неверный номер». Я предполагаю, что это из-за того, как сервер анализирует оператор select.
Если бы вы могли оказать какую-либо помощь, это было бы здорово!