在SQL开发中,字符串合并是高频操作,CONCAT函数就是专门用来实现字符串拼接的核心工具。不同数据库对CONCAT的支持略有差异,但基础用法逻辑一致。

CONCAT函数基础介绍
CONCAT函数的作用是将多个字符串参数按顺序拼接成一个完整的字符串,基本语法为CONCAT(str1, str2, ...),参数可以是字符串常量、字段名或者其他返回字符串的表达式。
需要注意的是,在部分数据库中,如果参数是NULL,CONCAT会直接返回NULL,而有的数据库会忽略NULL值,使用时要结合具体数据库规则判断。
5种典型用法示例
1. 基础字符串常量拼接
直接将多个字符串常量拼接成新的字符串,是最基础的用法。
-- 拼接两个字符串常量
SELECT CONCAT('Hello', ' ', 'World') AS result;
-- 输出结果:Hello World2. 表中字段拼接
将表中的多个字段内容拼接成新的字段返回,常用于生成完整名称、地址等场景。
-- 假设有用户表users,包含first_name和last_name字段
SELECT
user_id,
CONCAT(first_name, last_name) AS full_name
FROM users;
-- 如果first_name是张三,last_name是三,输出full_name为张三三3. 带分隔符的字符串拼接
拼接时加入分隔符,让合并后的字符串可读性更强,比如拼接地址时加入逗号分隔。
-- 拼接省市区字段,用逗号分隔
SELECT
CONCAT(province, ',', city, ',', district) AS full_address
FROM address_table;
-- 输出示例:广东省,广州市,天河区4. 处理NULL值的拼接
针对数据库中字段可能为NULL的情况,结合IFNULL或者COALESCE函数处理,避免拼接结果出现异常。
-- 如果middle_name可能为NULL,用空字符串替代后再拼接
SELECT
CONCAT(
first_name,
' ',
IFNULL(middle_name, ''),
' ',
last_name
) AS full_name
FROM users;
-- 当middle_name为NULL时,输出张三 三,不会出现空值导致的拼接异常5. 结合其他函数实现复杂拼接
CONCAT可以和其他SQL函数结合,实现更复杂的字符串处理需求,比如拼接处理后的日期、转换后的数值等。
-- 拼接用户名和注册年份,日期用YEAR函数提取年份
SELECT
CONCAT(user_name, ' 注册于 ', YEAR(register_time), ' 年') AS register_info
FROM users;
-- 输出示例:张三 注册于 2023 年使用注意事项
- 不同数据库对CONCAT的参数数量限制不同,MySQL支持至少两个参数,部分数据库支持更多参数。
- 拼接数值类型字段时,会自动转换为字符串,不需要手动转换,但如果需要指定格式,建议先处理数值格式再拼接。
- 如果拼接的字符串包含特殊字符,不需要额外转义,CONCAT会直接拼接原始内容。