ней буквы чтоб не выдавало ошибку а выдавало 0, как это сделать не подскажете?
при этом конструкция находится после WHERE
with src as (select 'a12345' as v) select case when v ~ '^\d+$' then v::numeric else 0 end from src ;
Общий правильный подход — сначала превращать "плохие" значения в NULL, оставляя "хорошие" без изменения, потом делать CAST, а потом превращать NULL-ы в нужное значение. Т.е. в данном случае приблизительно так: WITH src(v) AS ( VALUES ('a12345'), ('132213') ) SELECT COALESCE((CASE WHEN v ~ '^[0123456789]+$' THEN v END)::numeric, 0) FROM src;
Обсуждают сегодня