在PostgreSQL中,我有一个带有varchar列的表.数据应该是整数,我需要在查询中使用整数类型.有些值是空字符串.
SELECT myfield::integer FROM mytable
yields ERROR: invalid input syntax for integer: ""
在postgres中进行强制转换时,如果出现错误,如何查询强制转换并获得0?
在PostgreSQL中,我有一个带有varchar列的表.数据应该是整数,我需要在查询中使用整数类型.有些值是空字符串.
SELECT myfield::integer FROM mytable
yields ERROR: invalid input syntax for integer: ""
在postgres中进行强制转换时,如果出现错误,如何查询强制转换并获得0?
我自己也在努力解决一个类似的问题,但我不希望函数的开销.我提出了以下问题:
SELECT myfield::integer FROM mytable WHERE myfield ~ E'^\\d+$';
Postgres简化了它的条件,所以你不应该让任何非整数碰到::integer强制转换.它还处理空值(它们与regexp不匹配).
如果您想要零而不是不 Select ,那么CASE语句应该可以:
SELECT CASE WHEN myfield~E'^\\d+$' THEN myfield::integer ELSE 0 END FROM mytable;