Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL通过分隔符拆分字符串,但在缺少值时报告NULL_Sql_String_Split_Google Bigquery - Fatal编程技术网

SQL通过分隔符拆分字符串,但在缺少值时报告NULL

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

我正在使用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_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