如何将字符串转换为带有字符的数字(Postgres)

时间:2016-04-19 20:00:30

标签: postgresql

我有一个字符串,我想变成Numerics。问题是该字段可以包含字符,我很难做一个简单的正则表达式替换。这是一个例子,

field1
1
1.5
2adfk3
2. Section 2
0'#%0ls23
3.987

我基本上想要的是如果字段可以原生地作为数字转换,则返回Numeric,否则返回NULL。例如,我想要另一个字段

field2
1
1.5
NULL
NULL
NULL
3.987

其中field2现在是数字。这样做的最佳方式是什么?

在Excel中,我认为这最接近IFERROR

1 个答案:

答案 0 :(得分:0)

您可以使用案例表达式和正则表达式执行此操作:

select column1,
       case 
           when column1 ~ '^[0-9\.]+$' then column1::numeric
           else null
       end as column2
from the_table

正则表达式检查列的内容是否仅包含数字和点。如果是这种情况,则可以将值强制转换为数值,否则返回null