1. CONCAT函数
CONCAT函数用于将多个字符串连接在一起,可以连接两个或多个字符串。语法如下:
CONCAT(string1,string2,...)
其中,string1、string2等是要连接在一起的字符串,可以是文本或字段。这些字符串可以是任何类型的,包括数字和日期。如果输入的字符串中有任何一个为NULL,则返回值为NULL。
使用CONCAT函数连接两个字段示例:
SELECT CONCAT(first_name,' ',last_name) AS full_name FROM employees;
运行结果如下:
+------------------+
| full_name |
+------------------+
| Georgi Facello |
| Bezalel Simmel |
| Parto Bamford |
| Chirstian Koblick|
| Kyoichi Maliniak |
| Anneke Preusig |
| Tzvetan Zielinski|
+------------------+
在上面的示例中,创建了一个名称为full_name的别名,使用CONCAT函数将first_name和last_name字段连接到一个完整的名字字符串中。
2. CONCAT_WS函数
CONCAT_WS函数用于连接多个字符串,并使用指定的分隔符分隔它们。语法如下:
CONCAT_WS(separator,string1,string2,...)
其中,separator是用于分隔字符串的字符或字符串,它必须指定在第一个参数中,后续的参数是要连接在一起的字符串。如果后续的字符串中有任何一个为NULL,则它们将被忽略。
使用CONCAT_WS函数连接两个字段示例:
SELECT CONCAT_WS(', ',last_name,first_name) AS full_name FROM employees;
运行结果如下:
+------------------+
| full_name |
+------------------+
| Facello, Georgi |
| Simmel, Bezalel |
| Bamford, Parto |
| Koblick, Chirstian|
| Maliniak, Kyoichi |
| Preusig, Anneke |
| Zielinski, Tzvetan|
+------------------+
在上面的示例中,使用CONCAT_WS函数连接last_name和first_name字段,并使用逗号隔开。
3. GROUP_CONCAT函数
GROUP_CONCAT函数用于将多行数据组合成一行数据。语法如下:
GROUP_CONCAT([DISTINCT] expr [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [, col_name ...]]
[SEPARATOR str_val])
其中,expr可以是任何类型的,如果为字符类型,则必须用引号括起来。DISTINCT用于移除重复的值,ORDER BY用于指定排序方式,SEPARATOR用于指定分隔符,默认分隔符为逗号。
使用GROUP_CONCAT函数将多行数据组合成一行,示例:
SELECT department_id, GROUP_CONCAT(first_name SEPARATOR ', ') AS employee_list FROM employees GROUP BY department_id ORDER BY department_id;
运行结果如下:
+---------------+--------------------------------------------------------+
| department_id | employee_list |
+---------------+--------------------------------------------------------+
| 1 | Georgi, Bezalel, Parto, Anneke |
| 2 | Chirstian |
| 3 | Kyoichi, Tzvetan |
| 4 | Duangkaew, Hongwei, Ladislav, Leucrotta, Moty |
| 5 | Hilary, Danel, Shu |
| 6 | Magy |
| 7 | Ayumi, Xinhua, Mona, Herbie |
| 8 | Gino, Masali, Yunming, Mohammed, Olga, Perla, Hiroyuki |
| 9 | Vishv, Karsten, Saniya, Adrienn, Chin, Alain |
+---------------+--------------------------------------------------------+
在上面的示例中,将employees表中按部门分组,并使用GROUP_CONCAT函数将first_name列中的值连接起来,使用逗号作为分隔符。