У меня есть таблица скажем table_Test, которая содержит некоторые тестовые значения, и у нее есть столбец с типом varchar с именем say Value. Некоторые примеры значений в столбце значений имеют вид
'5.5', '> 7.2', '> 3.6' и т. Д., Только возможные не числовые символы в значениях: '<' и '>'.
Теперь необходимо извлечь данные из этой таблицы со значением, превышающим, скажем, 5.
Я пытался преобразовать значение в числовое значение перед сравнением с приведенным ниже запросом:
SELECT *
FROM table_test
WHERE to_number(TRIM(translate(value,'<>',' ') ) ) >= 5
Этот запрос работает полностью нормально. Однако, когда я выполняю самостоятельное объединение, чтобы включить другие условия в мое требование, следующий запрос не выполняется.
SELECT res1.client_id,
res1.value,
res1.test_date
FROM table_test res1,
table_test res2
WHERE res1.client_id = res2.client_id
AND res1.lab_sample_source_id = 1
AND res2.lab_sample_source_id = 2 AND res2.lab_method_id = 52
AND to_number(TRIM(translate(res1.value,'<>',' ') ) ) >= 5
AND to_number(TRIM(translate(res1.value,'<>',' ') ) ) < 10
Запрос не выполнен с ошибкой:
ORA-01722: неверный номер
01722. 00000 - «неверный номер»
* Причина: указанный номер был недействительным.
* Действие: укажите действительный номер.