Google bigquery 仅当字段包含双引号时,GROUP_CONCAT才会自动添加双引号

Google bigquery 仅当字段包含双引号时,GROUP_CONCAT才会自动添加双引号,google-bigquery,Google Bigquery,当我在BigQuery中对包含双引号的字段使用GROUP_CONCAT时, 结果值为 自动转义并添加了一些双引号。 但是,如果字段不包含双引号,则GROUP_CONCAT的行为会略有不同 案例1双引号 桌子 以及查询 SELECT GROUP_CONCAT(word) AS words, num FROM Table GROUP BY num SELECT GROUP_CONCAT(word) AS words, num FROM Table GROUP BY num SELECT CONC

当我在BigQuery中对包含双引号的字段使用GROUP_CONCAT时, 结果值为 自动转义并添加了一些双引号。 但是,如果字段不包含双引号,则GROUP_CONCAT的行为会略有不同

案例1双引号 桌子

以及查询

SELECT GROUP_CONCAT(word) AS words, num
FROM Table
GROUP BY num
SELECT GROUP_CONCAT(word) AS words, num
FROM Table
GROUP BY num
SELECT CONCAT(word, '12"3') AS words
FROM Table
结果

Row | words         | num
--- | ------------- | ---
 1  | "fo""o,ba""r" |   1
 2  | "ba""z"       |   2
Row | words     | num
--- | --------- | ---
 1  | fo'o,ba'r |   1
 2  | ba'z      |   2
Row | words        
--- | ---------
 1  | fo"o12"3
 2  | ba'r12"3
↑它是自动转义的

案例2不带双引号 桌子

以及查询

SELECT GROUP_CONCAT(word) AS words, num
FROM Table
GROUP BY num
SELECT GROUP_CONCAT(word) AS words, num
FROM Table
GROUP BY num
SELECT CONCAT(word, '12"3') AS words
FROM Table
结果

Row | words         | num
--- | ------------- | ---
 1  | "fo""o,ba""r" |   1
 2  | "ba""z"       |   2
Row | words     | num
--- | --------- | ---
 1  | fo'o,ba'r |   1
 2  | ba'z      |   2
Row | words        
--- | ---------
 1  | fo"o12"3
 2  | ba'r12"3
↑没有添加双引号

案例3带双引号的标准混凝土 ※普通海螺的行为与GROP_海螺不同。 不添加转义双引号

桌子

以及查询

SELECT GROUP_CONCAT(word) AS words, num
FROM Table
GROUP BY num
SELECT GROUP_CONCAT(word) AS words, num
FROM Table
GROUP BY num
SELECT CONCAT(word, '12"3') AS words
FROM Table
结果

Row | words         | num
--- | ------------- | ---
 1  | "fo""o,ba""r" |   1
 2  | "ba""z"       |   2
Row | words     | num
--- | --------- | ---
 1  | fo'o,ba'r |   1
 2  | ba'z      |   2
Row | words        
--- | ---------
 1  | fo"o12"3
 2  | ba'r12"3
问题 我想知道为什么这些案例的结果不同。 我不想在案例1中转义并添加双引号。 有什么解决办法吗


谢谢。

这个问题已经报告给了谷歌,但是他们没有提供这个地址的预计到达时间

该问题已发布在。有关此问题的更新可在提供的链接中找到

如中所述,Google提到了支持此用例的计划,但在发布时没有在中提供ETA。截至2015年2月,该问题已得到解决

谷歌添加了一个GROUP_CONCAT_UNQUOTED函数,其行为与GROUP_CONCAT几乎相同,只是它没有逃逸双引号

以下是来自的函数说明:

组_CONCAT_不带引号的'str'[,分隔符]

将多个字符串连接为单个字符串,其中每个值由可选的分隔符参数分隔。如果省略分隔符,BigQuery将返回逗号分隔的字符串

与GROUP_CONCAT不同,此函数不会向包含双引号字符的返回值添加双引号。例如,字符串ab将返回为ab

示例:从中选择“ab”作为x,选择“cd”作为x


这是奇怪的行为。能否在连接之前用另一个字符(如“~”)替换双引号,然后再重新替换它们?谢谢您的回复。我将每个单词中的双引号改为一些其他字符,例如“:”、“~”、“-”、“¥”和重试组。然后,结果与单报价情况相同。仅当word包含双引号时,才会添加转义双引号。我已向Google@Marilu谢谢。如果你能从谷歌得到一些答案,如果你能在这里写信,我将不胜感激。