在分析数据时,什么情况下使用 CONCAT with + 比 CONCAT_WS 更好?
首先,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
是在没有重复分隔符的情况下连接字符串的首选。
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 查询的许多其他部分。
假设您想组合名字和姓氏
CONCAT(名字,'',姓氏)作为全名