导读:本期聚焦于小伙伴创作的《SQL中常用的字符串连接函数有哪些?怎么根据不同数据库选择用法?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《SQL中常用的字符串连接函数有哪些?怎么根据不同数据库选择用法?》有用,将其分享出去将是对创作者最好的鼓励。

字符串连接是SQL开发中的基础操作,无论是拼接查询字段、生成自定义格式数据还是处理多字段合并需求,都需要用到对应的字符串连接函数。不过不同数据库引擎对这类函数的支持差异较大,直接使用错误语法会导致执行失败,因此掌握各数据库对应的连接函数用法很有必要。

SQL中常用的字符串连接函数有哪些?怎么根据不同数据库选择用法?

通用型连接函数CONCAT

CONCAT是目前兼容性最好的字符串连接函数,MySQL、PostgreSQL、Oracle 12c及以上版本都支持,语法非常简单,按顺序传入需要拼接的参数即可,函数会自动将非字符串参数转为字符串类型再拼接。

需要注意的是,MySQL的CONCAT函数在遇到NULL参数时,会直接返回NULL,而Oracle和PostgreSQL的CONCAT只会忽略NULL值。下面是一个MySQL的使用示例:

-- 拼接用户姓名和手机号,生成完整标识
SELECT CONCAT(user_name, '_', phone_number) AS user_identifier
FROM user_info
WHERE status = 1;

如果需要拼接多个字段,CONCAT支持传入任意多个参数,不需要嵌套使用,比如拼接地址的三个部分:

SELECT CONCAT(province, city, district, detail_address) AS full_address
FROM address_table;

支持分隔符的连接函数CONCAT_WS

CONCAT_WS是CONCAT的扩展版本,第一个参数是指定的分隔符,后续参数是需要拼接的内容,函数会自动用分隔符把后续参数连接起来,并且会忽略NULL值,不会在结果中留下多余的分隔符。

这个函数非常适合生成带固定分隔符的字符串,比如生成用逗号分隔的标签列表:

-- 用逗号拼接用户的所有标签,忽略空标签
SELECT CONCAT_WS(',', tag1, tag2, tag3, tag4) AS user_tags
FROM user_tag_relation;

如果分隔符本身传入NULL,CONCAT_WS会返回NULL,所以使用时需要确保分隔符参数有效。

不同数据库的专属连接方式

Oracle的||运算符

Oracle在12c之前不支持CONCAT的多参数用法,只能使用||运算符进行字符串拼接,这个运算符也兼容空值,遇到NULL时会当作空字符串处理。

-- Oracle中使用||拼接字符串
SELECT user_name || '的手机号是' || phone_number AS user_desc
FROM user_info;

如果需要拼接多个字段,可以连续使用||运算符,不过如果字段较多,写法会比CONCAT更繁琐。

SQL Server的+运算符

SQL Server不支持CONCAT函数(2012之前的版本),也常用+运算符进行字符串拼接,但是和Oracle不同的是,只要有一个操作数是NULL,+运算的结果就会是NULL,需要提前用ISNULL函数处理空值。

-- SQL Server中处理空值后拼接字符串
SELECT ISNULL(user_name, '') + '_' + ISNULL(phone_number, '') AS user_identifier
FROM user_info;

SQL Server 2012+的CONCAT支持

SQL Server 2012及更高版本也开始支持CONCAT函数,用法和MySQL一致,并且会自动忽略NULL值,比+运算符更友好,推荐使用新版本的用户优先使用CONCAT。

函数特性对比

下面是各常见连接方式的特性对比,方便开发者根据场景选择:

连接方式支持数据库NULL处理分隔符支持
CONCATMySQL、PostgreSQL、Oracle12c+、SQL Server2012+MySQL返回NULL,其余忽略需手动传分隔符参数
CONCAT_WSMySQL、PostgreSQL自动忽略NULL首个参数指定分隔符
||Oracle、PostgreSQLOracle忽略,PostgreSQL忽略需手动拼接分隔符
+SQL Server遇NULL返回NULL需手动拼接分隔符

使用注意事项

  • 拼接非字符串类型字段时,尽量提前确认是否需要手动转换类型,虽然多数CONCAT函数会自动转换,但部分场景下可能出现隐式转换错误。
  • 跨数据库开发时,优先选择CONCAT函数,兼容性更好,避免使用数据库专属的运算符。
  • 如果需要拼接大量字段且需要固定分隔符,优先使用CONCAT_WS,减少重复写分隔符的工作量。
  • 处理可能为NULL的字段时,要么用CONCAT_WS忽略空值,要么提前用COALESCE或者ISNULL函数设置默认值,避免结果异常。

SQL字符串连接函数CONCATCONCAT_WS数据库适配修改时间:2026-06-04 02:39:59

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