Документация для Oracle TO_CHAR(number)
состояний
Если вы опустите fmt, то n преобразуется в значение VARCHAR2 достаточно долго, чтобы содержать его значащие цифры.
Это означает, что единственным нецифровым символом, который может быть получен, является знак минус или десятичная точка. Если число положительное и не имеет дробной части, оно не будет соответствовать регулярному выражению \D
.
С другой стороны, в PostgreSQL CAST(
числовой (38,8) as TEXT)
возвращает значение с количеством десятичных знаков, указанных в спецификации типа, в данном случае 8.
E.g.:
cast( cast(12341234 as numeric(38,8)) as TEXT)
Генерирует 12341234.00000000
Результат такого приведения всегда будет содержать десятичную точку и, следовательно, всегда будет соответствовать регулярному выражению \D
.
Вы можете обнаружить, что замена этого кода решит вашу проблему:
(LINK_ID % 1) <> 0.0
В качестве альтернативы, если вам нужно использовать регулярное выражение (например, для упрощения процесса миграции), рассмотрите возможность его изменения на '\.0*[1-9]'
, т. Е. Чтобы найти десятичную точку с любой ненулевой цифрой после нее.