Похоже, ваши данные неправильно введены, у вас есть тип данных text или varchar для того, что должно быть числовым c типом класса. Если так, то это нужно исправить, но да, вы должны сначала исправить данные. Вы можете изолировать и исправить неправильные строки, выбрав те, которые не соответствуют регулярному выражению, которое определяет допустимое значение . Поскольку вы не публикуете образцы данных или описания таблиц, предоставьте только пример, который я составляю, не ваши значения.
Пример: - Только для цифр: column_name! ~ '^ [0-9] + $' - Для положительного или отрицательного целого числа: имя_ столбца! ~ '^ (+ | -)? [0-9] + $'
with test (id,num_val) as
( values (1,'abc'),(2,'18'),(3,'1.7'),(4,'-12') )
select id, num_val, 'Fails Just Digits'
from test
where num_val !~ '^[0-9]+$'
union
select id, num_val, 'Fails Pos/Neg Integer'
from test
where num_val !~ '^(\+|-)?[0-9]+$'
order by 1,3;
- терпит неудачу, оба
- проходят оба (так не выводится)
- сбой обоих
- сбой Просто цифры