我有一个postgres表,我是从postgres的mongodb集合中加载的。尽管postgres列的类型为'bigint',但是有些行比max big int大,因此当我尝试从该表更新另一个表时,它会出错。也有带有非法字符的bigint列,例如我通过[]清除的“ _2131441”
WHERE col_name !~ '^([0-9]+[.]?[0-9]*|[.][0-9]+)$';
如何根据类型将其强制转换为有效列,否则将其设置为null / none?
我有一个postgres表,我是从postgres的mongodb集合中加载的。尽管postgres列的类型为'bigint',但是有些行比max big int大,因此,当我尝试更新时......>
使用CASE
表达式:
CASE WHEN col_name !~ '^(\+|-)?[[:digit:]]+$'
THEN NULL::bigint
WHEN col_name::numeric NOT BETWEEN -9223372036854775808 AND 9223372036854775807
THEN NULL::bigint
ELSE col_name::bigint
END