Sql 如何阅读&;单列分离数据

Sql 如何阅读&;单列分离数据,sql,hive,Sql,Hive,字段说明: 用户id跟随这些创建者的每个用户的唯一标识符 创建者id由“&”分隔的创建者id列表 User_id,Creator_IDs U100,A300&A301&A302 U101,A301&A302 U102,A302 U103,A303&A301&A302 U104,A304&A301 U105,A305&A301&A302 U106,A301&A302 U107,A302 注意:我必须在值之前删除U和A,我想我

字段说明:

用户id跟随这些创建者的每个用户的唯一标识符 创建者id由“&”分隔的创建者id列表

User_id,Creator_IDs
U100,A300&A301&A302
U101,A301&A302
U102,A302
U103,A303&A301&A302
U104,A304&A301
U105,A305&A301&A302
U106,A301&A302
U107,A302
注意:我必须在值之前删除U和A,我想我可以使用substring来表示U,但是我可以为A做什么,因为它是变化的


此外,我还必须使用这些数据来获得不同的创建者id和后续用户。您可以尝试使用regexp\u replace,例如:

select regexp_replace(User_id, "^U", "")
 , regexp_replace(regexp_replace(Creator_IDs, "A", ""), '&', ',')

您可以使用
REPLACE
函数从字符串中删除。函数应该是这样的-

SELECT REPLACE('A300&A301&A302', 'A','') AS NewString;
对于整个查询-

select concat (REPLACE('U100', 'U',''),',',REPLACE('A300&A301&A302', 'A',''));
你可以用这个来看看它是如何工作的。对于您的查询,您当然必须使用列名-

select concat (REPLACE(user_id, 'U',''),',',REPLACE(Creator_Id, 'A',''));

更新您的问题并添加预期的结果首先,我需要从用户id中删除U,从创建者id中删除A。因此,我想我们可以以数组格式读取创建者id。但是如何从不同的字段中删除A,并像以前一样以&?分隔。。。根据您的数据样本更新您的问题并添加清晰的预期结果。。不是文字。我认为它需要这样的输出:100300100301100302101301101302