将整型转换为整数 – 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