GROUP_CONCAT 是用于将分组后的多个行连接为一个字符串的聚合函数。它可以在 SELECT 查询中使用,并结合 GROUP BY 子句来实现对分组数据的字符串拼接操作。
GROUP_CONCAT 的一般语法如下:
GROUP_CONCAT([DISTINCT] expression [ORDER BY clause] [SEPARATOR separator])
其中:
DISTINCT
:可选项,表示去除重复的值。expression
:表示要连接的表达式或列名。ORDER BY clause
:可选项,用于指定连接结果的排序顺序。SEPARATOR separator
:可选项,用于指定连接结果中的分隔符,默认为逗号(,)。
示例:
假设有一个 Students 表包含学生的姓名和所属班级信息:
+----+-------+---------+
| ID | Name | Class |
+----+-------+---------+
| 1 | John | A |
| 2 | Alice | B |
| 3 | Bob | A |
| 4 | Mary | B |
+----+-------+---------+
可以使用 GROUP_CONCAT 来将同一班级的学生姓名连接为一个字符串,以班级作为分组依据:
SELECT Class, GROUP_CONCAT(Name) AS Students
FROM Students
GROUP BY Class;
执行以上查询后,会得到如下结果:
+-------+------------------+
| Class | Students |
+-------+------------------+
| A | John,Bob |
| B | Alice,Mary |
+-------+------------------+
注意:默认情况下,GROUP_CONCAT 函数会将连接后的字符串按照系统变量 group_concat_max_len
的值进行截断,如果需要更大的连接长度,可以在查询之前设置该变量的值,例如:SET group_concat_max_len = 1000000;
。
-
A中SQL语句查询不出列值为NULL的字段,此时需对字段为NULL的情况另外处理
-
null与任何字段相比都会返回false,为此,oracle提供了一个is null词组判断null。空字符串不是null
-
查询null的值:select * from student_table where name is null ;
-
查询非null的值,就需要使用is not null词组判断