在Vertica中使用CROSS JOIN与string_split实现字符串拆分关联
Vertica中拆分字符串实现行转列的解决方案
在Vertica中没有string_split函数,你需要使用SPLIT_TO_TABLE来实现字符串拆分并和原表关联的需求,这是Vertica专门用于将字符串拆分成多行的内置函数。
假设你的表名为user_codes(注意避免使用table这类SQL关键字作为表名),正确的SQL语句如下:
SELECT uc.name, t.value AS code FROM user_codes uc CROSS JOIN SPLIT_TO_TABLE(uc.codes, ',') AS t;
代码说明
SPLIT_TO_TABLE(uc.codes, ','):将codes列按逗号分隔,把每个拆分后的字符串作为单独的行返回,返回结果中默认用value字段存储拆分后的单个值。- 用别名
t指代拆分后的结果集,通过CROSS JOIN将原表的每一行和拆分后的多行进行关联,最终得到你期望的行转列效果。
执行上述语句后,就能得到如下结果:
| name | code |
|---|---|
| Luis | 1 |
| Luis | 2 |
| Luis | 3 |
| Maria | 4 |
| Maria | 5 |
| Maria | 6 |
内容的提问来源于stack exchange,提问作者Luis Guillermo
相关产品推荐
相关产品推荐

