prepostsql拆分表中的字段,找出数字,并更新到其他的字段上的sql

x33g5p2x  于2021-11-09 转载在 其他  
字(0.6k)|赞(0)|评价(0)|浏览(433)

现在的需求是将model中的字符拆分,找出数字,并更新到v_cpu的字段上,更新的逻辑是

1、先拆分

  1. SELECT ID, string_to_array( fastone_model, '.' ) AS model FROM reserved_instance

2、再打成行的形式

  1. SELECT ID, UNNEST ( string_to_array( fastone_model, '.' ) ) AS model FROM reserved_instance

3、过滤掉字符的行

  1. SELECT
  2. ri.model AS bmodel,
  3. ri.ID AS bid
  4. FROM
  5. ( SELECT ID, UNNEST ( string_to_array( fastone_model, '.' ) ) AS model FROM reserved_instance ) ri
  6. WHERE
  7. ri.model ~ '^[^a-z]+$'

4、更新到新的字段

  1. UPDATE reserved_instance
  2. SET v_cpu = b.bmodel :: INT
  3. FROM
  4. (
  5. SELECT
  6. ri.model AS bmodel,
  7. ri.ID AS bid
  8. FROM
  9. ( SELECT ID, UNNEST ( string_to_array( fastone_model, '.' ) ) AS model FROM reserved_instance ) ri
  10. WHERE
  11. ri.model ~ '^[^a-z]+$'
  12. ) b
  13. WHERE
  14. b.bid = ID

5、查看是否更新成功

相关文章