concat_ws 是 sql 中用于带分隔符拼接字符串的函数,其全称是 concatenate with separator,语法为 concat_ws(separator, string1, string2, …, stringn),分隔符为第一个参数,后续为拼接内容,null 值会被忽略。1. 适用于地址拼接,如用空格连接省、市、区,且自动跳过空值;2. 可格式化日期,将年、月、日字段用短横线连接成标准格式;3. 支持合并标签,将多个标签字段用逗号拼接展示;使用时需注意:分隔符必须为字符串常量,所有参数为 null 时结果也为 null,不同数据库支持不同,如 mysql 支持,postgresql 需用 array_to_string,sql server 需手动拼接,同时要注意避免拼接内容中包含分隔符导致重复的问题。

在 SQL 中,CONCAT_WS 是一个非常实用的字符串函数,用于将多个字符串拼接在一起,并且可以指定一个分隔符来分隔各个部分。相比普通的 CONCAT 函数,它更适用于需要统一分隔符的场景。

什么是 CONCAT_WS?
CONCAT_WS 的全称是 Concatenate With Separator,也就是“带分隔符的拼接”。它的基本语法是:

CONCAT_WS(separator, string1, string2, ..., stringN)
第一个参数是你要使用的分隔符,后面的参数是要拼接的内容。如果其中某个值为 NULL,会被自动忽略。
举个简单的例子:

SELECT CONCAT_WS('-', '2025', '04', '05');-- 输出:2025-04-05
这个函数非常适合处理地址、日期格式化、标签拼接等场景。
常见使用场景
1. 拼接地址信息
比如你有一张用户表,包含省、市、区三个字段,想把它们合并成完整地址:
SELECT CONCAT_WS(' ', province, city, district) AS full_address FROM users;
这样就能把三部分内容用空格连接起来,而且即使某一项为空(比如没有填写区),也不会出现多余的空格。
瞬映
AI 快速创作数字人视频,一站式视频创作平台,让视频创作更简单。
57 查看详情
2. 格式化日期或时间
有时候从数据库取出的是年、月、日字段,想拼成标准日期格式:
SELECT CONCAT_WS('-', year, month, day) AS formatted_date FROM dates;
只要确保月份和日期是两位数格式(如 04 而不是 4),就可以直接拼出类似 2025-04-05 的结果。
3. 合并多个标签或分类
如果你有一个文章标签表,每篇文章有多个标签字段(tag1, tag2, tag3),可以用 CONCAT_WS 把它们拼成一个字符串展示:
SELECT CONCAT_WS(',', tag1, tag2, tag3) AS tags FROM articles;
输出可能是:mysql,sql,function
使用时要注意的几个细节
分隔符必须是字符串常量,不能是列名或其他表达式。如果所有拼接内容都是 NULL,结果也会是 NULL。不同数据库系统对 CONCAT_WS 支持略有不同:MySQL 和 MariaDB 原生支持;PostgreSQL 没有原生 CONCAT_WS,但可以通过 array_to_string(ARRAY[...], sep) 实现类似功能;SQL Server 不支持,需要用 ISNULL + + 手动拼接。
小贴士:避免重复分隔符问题
一个容易忽略的地方是,当拼接字段中已经包含分隔符时,可能会导致数据混乱。例如:
SELECT CONCAT_WS('/', 'path', '/to/file');-- 输出会是:path/to/file (没问题)SELECT CONCAT_WS('/', 'path/', 'to/file');-- 输出会是:path//to/file (中间有两个斜杠)
所以在拼接路径、URL 等内容时,要提前处理掉多余的分隔符,或者统一规范输入格式。
基本上就这些。掌握了 CONCAT_WS 的用法,日常 SQL 字符串拼接就会方便很多,尤其是在需要统一分隔符的场合。
以上就是sql 中 concat_ws 用法_sql 中 concat_ws 指定分隔符拼接详解的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/984372.html
微信扫一扫
支付宝扫一扫