適用於:
Databricks SQL
Databricks Runtime 16.4 和更高版本
傳回群組中串接的 STRING 和 BINARY 值。
此函式是 listagg 函式的別名。
語法
string_agg ( [ALL | DISTINCT] expr [, delimiter] )
[ WITHIN GROUP (ORDER BY { sortKey [ sort_direction ] [ nulls_sort_oder ] } [, ...] ) ]
[ FILTER ( WHERE cond ) ]
sort_direction
[ ASC | DESC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
如果省略子句和OVER子句,此函式還可以作為WITHIN GROUP來使用FILTER子句。
論點
expr評估結果為
STRING或BINARY的表達式。NULL值會被忽略。delimiter符合用來分隔串連值的類型 的
expr。 預設值為''的空字串(STRING)和''::BINARY的零長度二進位(BINARY)。ORDER BY用來在串連前排列值的表達式。 預設值是群組中數據列的順序。
sortKey定義順序的表達式。
sortKey中的欄位參考也必須存在於expr中。sort_direction
依表達式指定順序的排序順序。
-
ASC:此表達式的排序方向為遞增。 -
DESC:此表達式的排序順序為遞減。
如果未明確指定排序方向,則預設數據列會以遞增方式排序。
-
空值排序順序
選擇性地指定是否在非 NULL 值之前/之後傳回 NULL 值。 如果未指定
null_sort_order,則如果排序順序為ASC,NULL 將先排序;如果排序順序為DESC,NULL 將後排序。-
NULLS FIRST:NULL不論排序順序為何,都會先傳回值。 -
NULLS LAST:不論排序順序為何,NULL的值最後都會被傳回。
-
cond:選擇性BOOLEAN表達式,篩選用於匯總的數據列。
退貨
如果 STRING 為 expr,則為 STRING;否則為 BINARY。
如果指定了DISTINCT,則只有唯一值會被彙總,且sortKey必須與expr匹配。
範例
-- Simple example with default delimiter
> SELECT string_agg(col) FROM VALUES ('a'), ('b'), ('c') AS tab(col);
acb
-- Simple example with explicit delimiter
> SELECT string_agg(col, ', ') FROM VALUES ('a'), ('b'), ('c') AS tab(col);
b, a, c
-- Example with nulls
> SELECT string_agg(col) FROM VALUES ('a'), (NULL), ('c') AS tab(col);
ac
-- Example with explicit order
> SELECT string_agg(col) WITHIN GROUP (ORDER BY col DESC)
FROM VALUES ('a'), ('b'), ('c') AS tab(col);
cba
-- Example with DISTINCT
> SELECT string_agg(DISTINCT col)
FROM VALUES ('a'), ('a'), ('b') AS tab(col);
ab
-- Example of FUNCTION_AND_ORDER_EXPRESSION_MISMATCH
> SELECT string_agg(DISTINCT col) WITHIN GROUP (ORDER BY id DESC)
FROM VALUES (1, 'a'), (2, 'b'), (3, 'c') AS tab(id, col);
Error: [INVALID_WITHIN_GROUP_EXPRESSION.MISMATCH_WITH_DISTINCT_INPUT
-- Example with `BINARY`
> SELECT hex(string_agg(col::binary, x'00'))
FROM VALUES (1, 'a'), (2, 'b'), (3, 'c') AS tab(id, col);
6100630062