将具有现有数据的列转换为postgresql中的另一种类型

时间:2016-03-23 10:06:39

标签: postgresql

我正在尝试将postgres中的'shippingDays'列转换为类型为varchar的现有数据为整数。

当前数据:

  1. '0-7天'应转换为7
  2. '8-14天'应转换为14
  3. '15 -30 Days'应转换为30
  4. '超过30天'应转换为31
  5. 最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

UPDATE your_table
SET your_column = CASE WHEN your_column='Over 30 Days' THEN '31' ELSE regexp_replace(your_column, '\d+-(\d+) Days', E'\\1', 'g') END

测试:

SELECT CASE WHEN your_column='Over 30 Days' THEN '31' ELSE regexp_replace(your_column, '\d+-(\d+) Days', E'\\1', 'g') END
FROM your_table

对于新专栏:

UPDATE your_table
SET your_new_column = CASE WHEN your_column='Over 30 Days' THEN 31 ELSE CAST(regexp_replace(your_column, '\d+-(\d+) Days', E'\\1', 'g') AS INTEGER) END