Mysql 字符串拼接 CONCAT CONCAT_WS CONCAT_NULL_YIELDS_NULL

CONCAT 函数的语法

CONCAT(string1, string2, ..., stringN)

其中,参数 string1 到 stringN 是要连接在一起的字符串。

CONCAT 函数的使用案例

例如,我们有一个包含下面文本的 employees 表:

+----+---------+--------+
| id | name   | salary |
+----+---------+--------+
| 1  | 张三  | 5000  |
| 2  | 李四  | 6000  |
| 3  | 王五  | 7000  |
+----+---------+--------+

现在我们需要将 namesalary 字段连接成一个新字段 info,并且在它们之间加上一个空格。可以使用 CONCAT 函数来实现:

SELECT CONCAT(name, ' ', salary) AS info FROM employees;

输出结果为:

+------------+
| info    |
+------------+
| 张三 5000 |
| 李四 6000  |
| 王五 7000  |
+------------+

上述 SQL 查询中,我们传入了两个参数:name 字段和 ' ' 字符串(表示一个空格)、salary 字段。这意味着我们将会在每个 name 值和 salary 值之间包含一个空格。

其他类似的 SQL 函数

除了 CONCAT 函数之外,MySQL 还提供了其他一些用于字符串拼接的函数。下面是一些常见的函数:

1. CONCAT_WS 函数

CONCAT_WS 函数也用于连接多个字符串,但与 CONCAT 函数不同的是,它可以指定一个分隔符。它的语法如下:

CONCAT_WS(separator, string1, string2, ..., stringN)

在 CONCAT_WS 函数中,separator 参数指的是要插入的分隔符。下面是一个例子:

SELECT CONCAT_WS(' ', name, salary) AS info FROM employees;

输出结果与使用 CONCAT 函数时一样。

2. GROUP_CONCAT 函数

GROUP_CONCAT 函数用于将每个组内的字符串连接成单个字符串。它的语法如下:

GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC], ...] [SEPARATOR str_val])

这个函数支持 GROUP BY 关键字进行分组,用户可以选择使用 DISTINCT 参数去重。下面是一个例子:

SELECT department, GROUP_CONCAT(name) FROM employees GROUP BY department;

输出结果为:

+------------+-------------------------------+
| department | GROUP_CONCAT(name)       |
+------------+-------------------------------+
| IT      | 张三, 李四, 王五         |
| HR      | 赵六, 周七             |
+------------+-------------------------------+

在上述例子中,我们首先对 employees 表进行分组,然后将每个分组内的 name 进行拼接。可以看到,在 IT 部门中,name 分别为 张三、李四 和 王五,这些名字通过 GROUP_CONCAT 函数连接成了一个字符串。

3. CONCAT_NULL_YIELDS_NULL

CONCAT_NULL_YIELDS_NULL 是 MySQL 的一个 SQL 模式,它控制 CONCAT 函数在遇到空值(NULL)时的行为。当设置了这个模式时,如果 CONCAT 函数的任一参数为 NULL,则函数的返回值也为 NULL。否则,函数会忽略 NULL 参数并将其替换为空字符串。默认情况下,这个模式是启用的。

总结

本文介绍了 MySQL 中用于字符串拼接的 CONCAT 函数及其常见的类似函数 CONCAT_WS 和 GROUP_CONCAT。Concat 函数能够简洁地将多个字符串拼接在一起,而 Concat_WS 函数和 GROUP_CONCAT 函数在一些需要指定分隔符或进行分组字符串拼接的情况下非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小...羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值