2026-10-21 18:29:07
SQL中concat、collect_set、collect_list和concat_ws函数的用法如下:
1. concat函数 用途:用于连接多个字符串。 特点:只要任一元素为NULL,结果就会返回NULL。 示例:SELECT concat; 将返回 'Hello World'。
2. concat_ws函数 用途:用于连接多个字符串,并指定一个分隔符。 特点:即使有一个字符串为NULL,也不会返回NULL。分隔符不能为NULL,否则结果将返回NULL。 示例:SELECT concat_ws; 将返回 'HelloWorld'。
3. collect_set函数 用途:用于将分组中的某列转换为数组返回,并进行去重。 特点:结果是无序的,如果需要有序结果,可以使用collect_list或结合sort_array函数。 示例:假设有一个表包含列id和category,SELECT category, collect_set FROM table GROUP BY category; 将返回每个类别对应的唯一ID数组。
4. collect_list函数 用途:用于将分组中的某列转换为数组返回,不进行去重。 特点:结果是无序的,但保留了所有元素,如果需要有序结果,可以使用sort_array函数。 示例:同样假设有一个表包含列id和category,SELECT category, collect_list FROM table GROUP BY category; 将返回每个类别对应的所有ID数组,包括重复值。
注意:虽然题目中未直接提及group_concat函数,但根据参考信息,该函数在处理分组字符串连接时也非常有用,其用法简述如下: group_concat函数: 用途:在有group by的查询语句中,将分组中同一个分组的值连接起来,返回一个字符串结果。 特点:可以通过distinct排除重复值,通过order by子句对结果进行排序,通过separator指定分隔符。 示例:SELECT group_concat FROM table GROUP BY name; 将返回每个名字对应的ID字符串,ID之间用分隔。