按分隔符拆分列并插入到不同的列中

unftdfkk  于 2021-08-01  发布在  Java
关注(0)|答案(2)|浏览(468)

我有以下数据,想设置一个分隔符并将它们插入到单独的列中。

  1. select * from name
  2. John | Kelly | Bick | Henry
  3. Steve | John | Max | Alis | Emily

我希望我的输出是。。。

  1. name1 name2 name3 name4 name5
  2. John Kelly Bick Henry
  3. Steve John Max Alis Emily
58wvjzkj

58wvjzkj1#

在postgres中,一个选择是 split_part() ,如果您事先知道每个字符串的最大值数。假设您的字符串列 col :

  1. select
  2. split_part(col, ' | ', 1) name1,
  3. split_part(col, ' | ', 2) name2,
  4. split_part(col, ' | ', 3) name3,
  5. split_part(col, ' | ', 4) name4,
  6. split_part(col, ' | ', 5) name5
  7. from name
a2mppw5e

a2mppw5e2#

您可以使用一次拆分 regexp_split_to_array() 然后从数组中提取元素:

  1. select ar[1] as name1, ar[2] as name2, ar[3] as name3, ar[4] as name4, ar[5] as name5
  2. from (values ('John | Kelly | Bick | Henry'),
  3. ('Steve | John | Max | Alis | Emily')
  4. ) v(names) cross join lateral
  5. regexp_split_to_array(v.names, ' \| ') ar;

相关问题