Мои извинения за название, лучше не знаю.
У меня следующая проблема, я получил сложную базу данных Oracle, которая требует, чтобы запрос проходил через некоторые обручи. Для этого конкретного запроса я хочу посмотреть, есть ли записи, в которых столбец A меньше, чем столбец B плюс 0,1.
ГДЕ выглядит следующим образом:
(
COALESCE(TO_NUMBER(REGEXP_SUBSTR("Column1", '^\d+')), 0)
<
(COALESCE(TO_NUMBER(REGEXP_SUBSTR("Column2", '^\d+')), 0) + 0.1)
)
Проблема в том, что он игнорирует значения, стоящие за точкой. Например: Столбец1 = 25,4 Столбец2 = 25,2
Это значение не должно отображаться, если 25,4 больше, чем 25,3
Если я говорю + 0,0, это работает правильно, показывая только значения, в которых Столбец1 малзатем column2 по своей природе.
Если я использую + 1.0, он также делает это правильно, если я делаю +1.2, он показывает только те, которые он просто повторяет, как если бы это было + 1.0
Любые предложения? Я не настолько опытен с Oracle, это единственная база данных (я, к сожалению) должна работать с ней.
Образец:
ID Column1 column2
1 25.4 25.2
2 RA 16
3 22 23.1
4 21 22
5 -12.2 -12.15
6 RA 0
7 11.3792 11.3538
8 0 -.023
9 1.05 .95