MySQL函数CONCAT、CONCAT_WS、GROUP_CONCAT用法详解

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列中的值连接起来,使用逗号作为分隔符。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签