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 的全称是 Concatenate With Separator,也就是“带分隔符的拼接”。它的基本语法是:
CONCAT_WS(separator, string1, string2, ..., stringN)
第一个参数是你要使用的分隔符,后面的参数是要拼接的内容。如果其中某个值为 NULL,会被自动忽略。
举个简单的例子:
SELECT CONCAT_WS('-', '2025', '04', '05'); -- 输出:2025-04-05
这个函数非常适合处理地址、日期格式化、标签拼接等场景。
比如你有一张用户表,包含省、市、区三个字段,想把它们合并成完整地址:
SELECT CONCAT_WS(' ', province, city, district) AS full_address FROM users;
这样就能把三部分内容用空格连接起来,而且即使某一项为空(比如没有填写区),也不会出现多余的空格。
有时候从数据库取出的是年、月、日字段,想拼成标准日期格式:
SELECT CONCAT_WS('-', year, month, day) AS formatted_date FROM dates;
只要确保月份和日期是两位数格式(如 04 而不是 4),就可以直接拼出类似 2025-04-05 的结果。
如果你有一个文章标签表,每篇文章有多个标签字段(tag1, tag2, tag3),可以用 CONCAT_WS 把它们拼成一个字符串展示:
SELECT CONCAT_WS(',', tag1, tag2, tag3) AS tags FROM articles;
输出可能是:mysql,sql,function
一个容易忽略的地方是,当拼接字段中已经包含分隔符时,可能会导致数据混乱。例如:
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 指定分隔符拼接详解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号