SQL通过分隔符拆分字符串,但在缺少值时报告NULL
我正在使用BigQuery,我想拆分以下类型的字符串: ;%20kostenlos%20%20在线%20%20游戏;BG177393617893; 分为5个不同的值。我使用的代码如下所示:SQL通过分隔符拆分字符串,但在缺少值时报告NULL,sql,string,split,google-bigquery,Sql,String,Split,Google Bigquery,我正在使用BigQuery,我想拆分以下类型的字符串: ;%20kostenlos%20%20在线%20%20游戏;BG177393617893; 分为5个不同的值。我使用的代码如下所示: FROM (select *, FIRST(SPLIT(clicks_table.affiliate_sub5, ';')) part1, NTH(2, SPLIT(clicks_table.affiliate_sub5, ';')) part2, NTH(3, SPLIT(clicks_t
FROM (select *, FIRST(SPLIT(clicks_table.affiliate_sub5, ';')) part1,
NTH(2, SPLIT(clicks_table.affiliate_sub5, ';')) part2,
NTH(3, SPLIT(clicks_table.affiliate_sub5, ';')) part3,
NTH(4, SPLIT(clicks_table.affiliate_sub5, ';')) part4,
NTH(5, SPLIT(clicks_table.affiliate_sub5, ';')) part5
我陷入的困境是:对于某些字符串,某些值丢失,当发生这种情况时,代码报告的不是该字符串的NULL,而是下面的字符串。例如:
;%20kostenlos%20%20online%20%20game;b;;177393617893;
然后将按以下方式拆分:
part 1 = %20kostenlos%20%20online%20%20game
part 2 = b
part 3 = 177393617893 (instead of NULL)
part 4 = blank (instead of 177393617893)
part 5 = blank (and that's fine)
如何避免这种情况
对于BigQuery遗留SQL
对于BigQuery标准SQL
标准SQL
选择*,
SPLITclicks_table.affiliate_sub5';'[安全补偿1]作为第1部分,
SPLITclicks_table.affiliate_sub5';'[安全补偿2]作为第2部分,
SPLITclicks_table.affiliate_sub5';'[安全补偿3]作为第3部分,
SPLITclicks_table.affiliate_sub5';'[安全补偿4]作为第4部分,
SPLITclicks_table.affiliate_sub5';'[安全补偿5]作为第5部分
从表
编辑你的问题,并在问题中举例说明你的意思
#legacySQL
SELECT *,
FIRST(SPLIT(REPLACE(clicks_table.affiliate_sub5, ';;', '; ;'), ';')) part1,
NTH(2, SPLIT(REPLACE(clicks_table.affiliate_sub5, ';;', '; ;'), ';')) part2,
NTH(3, SPLIT(REPLACE(clicks_table.affiliate_sub5, ';;', '; ;'), ';')) part3,
NTH(4, SPLIT(REPLACE(clicks_table.affiliate_sub5, ';;', '; ;'), ';')) part4,
NTH(5, SPLIT(REPLACE(clicks_table.affiliate_sub5, ';;', '; ;'), ';')) part5
FROM clicks_table