如何使用 CONCAT 和 +

问题描述 投票:0回答:3

在分析数据时,什么情况下使用 CONCAT with + 比 CONCAT_WS 更好?

sql google-bigquery
3个回答
1
投票

首先,BigQuery 不支持

CONCAT_WS
。据我所知,最接近的语法如下:

SELECT ARRAY_TO_STRING(['aaa', 'bbb', 'ccc'], ',') AS concat_str;

输出:

aaa、bbb、ccc

关于何时必须在 BigQuery 中使用

CONCAT()
ARRAY_TO_STRING()
(作为
CONCAT_WS
的替代品),它很大程度上取决于您的查询尝试实现的逻辑。

我的观点是

ARRAY_TO_STRING()
似乎适合 CSV 样式的字符串,并且
CONCAT
是在没有重复分隔符的情况下连接字符串的首选。


0
投票

SQL 方言在处理文本字符串数据的方式上有很大差异,无论是在存储还是在用于操作该文本的函数(CONCAT 等)方面。因此,StackOverflow 的核心答案会坚持将 SQL 变体放在问题标签中。

但你的情况不完全是这样。

因此,举例来说,您希望使用 SQL 连接来编写

www.example.com
。你可以做

CONCAT('www', '.', 'example', '.', 'com')

CONCAT_WS('.', 'www', 'example', 'com')

如您所见,对于该示例 CONCAT_WS 更加简洁。而且,如果您的应用程序逻辑是为了处理点分隔样式的名称而构建的,那么它就会尊重该逻辑。

另一方面,像

这样的表达
CONCAT('surname:', user_surname)

用 CONCAT 更容易表达。

所以,答案:选择取决于应用程序的数据组织。

在性能方面,CONCAT 和 CONCAT_WS 之间的差异太小而无法衡量,并且远小于满足典型 SQL 查询的许多其他部分。


0
投票

假设您想组合名字和姓氏

CONCAT(名字,'',姓氏)作为全名

© www.soinside.com 2019 - 2024. All rights reserved.