当我在BigQuery中使用GROUP_CONCAT包含双引号的字段时,
结果值是
自动转义并添加一些双引号
但如果字段不包含双引号,则GROUP_CONCAT的行为略有不同。
表
Row | word | num
--- | ---- | ---
1 | fo"o | 1
2 | ba"r | 1
3 | ba"z | 2
和查询
SELECT GROUP_CONCAT(word) AS words, num
FROM Table
GROUP BY num
结果
Row | words | num
--- | ------------- | ---
1 | "fo""o,ba""r" | 1
2 | "ba""z" | 2
↑它会自动转义。
表
Row | word | num
--- | ---- | ---
1 | fo'o | 1
2 | ba'r | 1
3 | ba'z | 2
和查询
SELECT GROUP_CONCAT(word) AS words, num
FROM Table
GROUP BY num
结果
Row | words | num
--- | --------- | ---
1 | fo'o,ba'r | 1
2 | ba'z | 2
↑没有添加双引号。
<3>案例3(带双引号的正常CONCAT)※正常的CONCAT表现不像GROP_CONCAT 不会添加转义双引号。
表
Row | word
--- | ----
1 | fo"o
2 | ba'r
和查询
SELECT CONCAT(word, '12"3') AS words
FROM Table
结果
Row | words
--- | ---------
1 | fo"o12"3
2 | ba'r12"3
我想知道为什么这些案件的结果会有所不同 Case1时我不想逃避并添加双引号 有没有解决方案?
感谢。
答案 0 :(得分:2)
此问题已向Google报告,但是他们没有提供ETA的时间。
此问题已发布在Official Google BigQuery issue and feature request tracker,有关此问题的更新中,可在提供的链接中找到。
答案 1 :(得分:0)
正如Marilu's answer中所述,Google提到支持此用例的计划,但在发布时未在feature request中提供ETA。截至2015年2月,该问题一直是&#34;固定&#34;。
Google添加了一个GROUP_CONCAT_UNQUOTED
函数,其行为几乎与GROUP_CONCAT
完全相同,除非它没有转义双引号。
以下是Google Docs for BigQuery Aggregate Functions:
中函数的说明
GROUP_CONCAT_UNQUOTED('str' [, separator])
将多个字符串连接成一个字符串,其中每个值由可选的
separator
参数分隔。如果省略separator
,则BigQuery返回逗号分隔的字符串。与
GROUP_CONCAT
不同,此函数不会为包含双引号字符的返回值添加双引号。例如,字符串a"b
将返回a"b
。示例:
SELECT GROUP_CONCAT_UNQUOTED(x) FROM (SELECT 'a"b' AS x), (SELECT 'cd' AS x);