SQL文本合并函数有哪些 详解SQL字符串拼接操作符

来源:站长平台作者:灯下变量头衔:程序员
导读:本期聚焦于小伙伴创作的《SQL文本合并函数有哪些 详解SQL字符串拼接操作符》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《SQL文本合并函数有哪些 详解SQL字符串拼接操作符》有用,将其分享出去将是对创作者最好的鼓励。

在SQL的实际开发中,文本合并是非常常见的操作,不同数据库的实现方式各有不同,主要分为专用合并函数和拼接操作符两类,下面分别介绍主流数据库的相关用法。

SQL文本合并函数有哪些 详解SQL字符串拼接操作符

一、通用合并函数CONCAT

CONCAT是大多数关系型数据库都支持的标准字符串合并函数,作用是按顺序拼接多个字符串参数,如果参数中有NULL值,不同数据库的处理逻辑略有差异。

1. MySQL中的CONCAT函数

MySQL的CONCAT函数会忽略所有参数为NULL的情况,只要有一个参数不为NULL就会返回拼接结果,所有参数都为NULL时返回NULL。

-- 拼接两个普通字符串
SELECT CONCAT('Hello', ' ', 'World') AS result;
-- 拼接包含NULL的字符串,NULL会被忽略
SELECT CONCAT('Name:', NULL, '张三') AS result;
-- 拼接多个字段,假设有user表,包含first_name和last_name字段
SELECT CONCAT(first_name, last_name) AS full_name FROM user;

2. PostgreSQL中的CONCAT函数

PostgreSQL的CONCAT函数会将NULL参数视为空字符串处理,不会返回NULL,拼接逻辑更友好。

-- NULL会被当作空字符串处理
SELECT CONCAT('User:', NULL, '李四') AS result;
-- 拼接多个字段和常量
SELECT CONCAT('用户ID:', id, ',姓名:', name) AS user_info FROM user_table;

二、专用合并函数

除了通用的CONCAT函数,部分数据库还提供了自己的专用合并函数,适配特定的使用场景。

1. MySQL的CONCAT_WS函数

CONCAT_WS的第一个参数是指定的分隔符,后续参数会被该分隔符拼接,同时会自动忽略NULL值,非常适合需要统一分隔符的场景。

-- 用逗号作为分隔符拼接字符串,NULL会被自动忽略
SELECT CONCAT_WS(',', '北京', '海淀区', NULL, '中关村') AS address;
-- 拼接用户地址字段,用短横线分隔
SELECT CONCAT_WS('-', province, city, district) AS full_address FROM user_address;

2. SQL Server的STRING_AGG函数

SQL Server 2017及以上版本提供了STRING_AGG函数,主要用于将多行数据的同一个字段合并成一个字符串,支持指定分隔符。

-- 假设有score表,包含student_name和score字段,按学生姓名分组拼接所有成绩
SELECT student_name, STRING_AGG(score, ',') AS all_scores 
FROM score 
GROUP BY student_name;

三、字符串拼接操作符

很多数据库支持使用特定的操作符直接拼接字符串,不需要调用函数,使用起来更简洁。

1. MySQL的拼接操作符||

MySQL默认情况下||是逻辑或操作符,需要开启PIPES_AS_CONCAT模式才会作为字符串拼接操作符使用,拼接时NULL会被忽略。

-- 开启拼接模式后使用||拼接
SET sql_mode = PIPES_AS_CONCAT;
SELECT 'Hello' || ' ' || 'World' AS result;

2. PostgreSQL的拼接操作符||

PostgreSQL中||是默认的字符串拼接操作符,使用非常广泛,NULL参与拼接时会被当作空字符串。

-- 直接拼接字符串
SELECT '姓名:' || '王五' || ',年龄:' || 25 AS info;
-- 拼接字段和常量
SELECT '用户:' || user_name || ',邮箱:' || email FROM user_info;

3. SQL Server的拼接操作符+

SQL Server使用+作为字符串拼接操作符,需要注意如果拼接的参数中有NULL,整个结果会返回NULL,需要提前处理NULL值。

-- 普通拼接
SELECT 'Hello' + ' ' + 'World' AS result;
-- 处理NULL值后再拼接,用ISNULL将NULL转为空字符串
SELECT '地址:' + ISNULL(province, '') + ISNULL(city, '') FROM address_table;

四、不同数据库用法对比

下面通过表格整理主流数据库的字符串合并方式,方便开发者快速查询:

数据库类型合并函数拼接操作符NULL处理逻辑
MySQLCONCAT、CONCAT_WS||(需开启模式)忽略NULL
PostgreSQLCONCAT||视为空字符串
SQL ServerSTRING_AGG、CONCAT+存在NULL则结果为NULL
OracleCONCAT(仅支持两个参数)、||||视为空字符串

五、使用注意事项

  • 使用拼接操作符前先确认当前数据库的语法规则,避免把逻辑操作符当成拼接符使用。
  • 拼接字段时如果有NULL值,提前用COALESCE或者对应数据库的NULL处理函数转换,避免结果不符合预期。
  • 多行数据合并成字符串的场景优先使用STRING_AGG这类聚合函数,比手动循环拼接效率更高。
  • 拼接大量字符串时注意数据库对字符串长度的限制,避免超出长度导致截断或者报错。

SQL字符串拼接concat函数字符串合并SQL操作符修改时间:2026-06-07 00:46:21

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。