Я должен проверить на неправильные значения, используя выражение regexp_like.Насколько я понимаю, я могу сделать это только для строк, и мои данные сохраняются в базе данных как двойной.
Я попытался привести его
SELECT column
FROM table
WHERE NOT REGEXP_LIKE(CAST(DECFLOAT(column) as VARCHAR(25)), '(\d{6}\.?\d{2})|(\d{7}\.?\d)')
К сожалению, такие значения, как 1234567.0, преобразуются в 1234567, и в результате этот запрос возвращает его как ошибку.
Другое решениенапример,
SELECT column
FROM table
WHERE NOT REGEXP_LIKE(CAST(CAST(column AS DECIMAL(8,1)) AS VARCHAR(25)), '(\d{6}\.?\d{2})|(\d{7}\.?\d)')
приводит к проблеме, при которой значения типа 134567.89
преобразуются в 1234567.8
и не возвращаются запросом как неверное значение.
Есть ли способ приведенияvarchar
без указания диапазона?