将整型转换为整数 – Postgres

我正在从Varchar中的原始数据表中导入数据,我需要将一个列中的varchar导入到一个string列中。 我尝试使用<column_name>::integer以及to_number(<column_name>,'9999999')但我得到错误,因为有几个空字段,我需要检索它们为空或空到新表。

请让我知道是否有相同的function。

疯狂的猜测:如果你的值是一个空string,你可以使用NULLIFreplace为NULL:

 SELECT NULLIF(your_value, '')::int 

你甚至可以进一步,限制在这个合并的领域,例如: –

 SELECT CAST(coalesce(<column>, '0') AS integer) as new_field from <table> where CAST(coalesce(<column>, '0') AS integer) >= 10; 

如果您需要将空列视为NULL ,请尝试以下操作:

 SELECT CAST(nullif(<column>, '') AS integer); 

另一方面,如果您确实需要避免使用NULL值,请尝试:

 SELECT CAST(coalesce(<column>, '0') AS integer); 

我同意,错误信息会帮助很多。

唯一的办法,我成功没有错误,因为NULL,或特殊caracteres或空string是这样做的:

 SELECT REGEXP_REPLACE(COALESCE(<column>, '0'), '[^0-9]*' ,'0')::integer FROM table 

我不能在卢卡斯的职位上发表评论(名声太less,我很新)。

在我的PG设置to_number(NULL)不起作用,所以我的解决scheme将是:

 SELECT CASE WHEN column = NULL THEN NULL ELSE column :: Integer END FROM table