SQL CONCAT 怎么拼接多个字段?MySQL、PostgreSQL、SQL Server、Oracle 用法对比
时间:2026-08-23 | 作者:游戏探长 | 阅读:0MySQL的CONCAT函数能支持多个参数,会按照顺序拼接非NULL值,一旦遇到NULL值,那么整体就会返回NULL;而PostgreSQL和SQL Server的CONCAT函数会自动跳过NULL值;Oracle原生的CONCAT函数仅支持两个参数,要是有多个字段需要拼接,就得使用||或者进行嵌套。
CONCAT 函数在 MySQL 中怎么拼多个字段
MySQL的CONCAT函数,那可是直接支持多参数的,完全不需要嵌套调用哦。它会把所有不是NULL的参数,按照顺序依次连接成一个字符串。但这里有个特别需要注意的地方,只要其中有一个参数是NULL,那么整个结果就会变成NULL,这可是很多人经常会踩的坑呀。
常见写法:SELECT CONCAT(first_name, ' ', last_name) FROM users;
- 参数可以是字段、字符串字面量、函数返回值(如
UPPER(name)) - 空字符串
''不影响结果,但NULL会“污染”整个拼接结果 - 如果字段可能为空,得先用
IFNULL或COALESCE处理,比如:CONCAT(IFNULL(first_name, ''), ' ', IFNULL(last_name, ''))
PostgreSQL 没有 CONCAT,得用 || 操作符或 CONCAT() 函数
PostgreSQL 9.1+ 提供了标准 CONCAT 函数,行为和 MySQL 接近(自动跳过 NULL),但更老版本或习惯写法常用双竖线 || 连接符。
区别很关键:col1 || col2 遇到 NULL 时只让那一项变 NULL,整体结果不一定是 NULL;而 CONCAT(col1, col2) 明确忽略 NULL 值。
- 推荐统一用
CONCAT,语义清晰且跨版本兼容性更好 - 注意:PostgreSQL 的
CONCAT至少要一个非NULL参数,否则返回空字符串,不是NULL - 示例:
SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) FROM people;即使middle_name是NULL,也会得到类似"JohnSmith"的结果
SQL Server 的 CONCAT 函数默认处理 NULL,但版本要求高
SQL Server 2012+ 才支持 CONCAT,它的设计就是为了解决 + 拼接时遇到 NULL 直接失败的问题。它会把所有参数转成字符串,并跳过 NULL。
- 不要混用
+和CONCAT:用+时必须手动ISNULL(col, ''),否则整行结果变NULL CONCAT会隐式转换类型,比如CONCAT(name, age)中age是 int,会被转成字符串,无需CAST- 如果兼容旧版本(如 SQL Server 2008),只能靠
ISNULL++组合,写起来啰嗦且易漏
Oracle 里没有 CONCAT 支持多字段,得用双管道或 LISTAGG
Oracle 的原生 CONCAT 函数只接受两个参数,想拼三个及以上字段,必须嵌套调用或者换用 || 操作符——后者才是实际主流用法。
CONCAT(CONCAT(first, ' '), last)写法难读又容易括号错位- 直接用
first || ' ' || middle || ' ' || last更直观,且||对NULL的处理是“留空”,不会中断拼接 - 如果要在分组后拼接多行值(比如一个人的多个邮箱),得用
LISTAGG(email, '; ') WITHIN GROUP (ORDER BY email),不是CONCAT的适用场景
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- MySQL LEFT JOIN 核心逻辑与条件位置详解
- 时间:2026-08-27
-
- SQL如何只更新查询结果中的前几条记录?
- 时间:2026-08-27
-
- SQL DELETE死锁深度解析:MySQL与Oracle实战排查指南
- 时间:2026-08-27
-
- SQL视图如何利用索引提升查询性能
- 时间:2026-08-27
-
- SQL实战:利用SELF JOIN高效查询层级关系
- 时间:2026-08-27
-
- MySQL STR_TO_DATE转换失败排查与实战指南
- 时间:2026-08-27
-
- 数据库存储过程批量处理实战:MySQL、SQL Server与PostgreSQL分批提交策略
- 时间:2026-08-27
-
- SQL分页查询分组聚合:OFFSET、HAVING与性能优化指南
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
