CONCAT_WS字符串拼接
使用CONCAT_WS高效拼接字符串并自动处理分隔符与NULL。 · 难度:入门 · +15XP
SQL CONCAT_WS —— 带分隔符的字符串拼接
CONCAT_WS(CONCAT With Separator)比CONCAT更智能——它自动跳过NULL值,用指定分隔符连接多个字符串。特别适合拼接地址、全名等场景。
CONCAT vs CONCAT_WS
-- CONCAT:遇到NULL整个结果为NULL
SELECT CONCAT('Hello', NULL, 'World'); -- 返回NULL
-- CONCAT_WS:自动跳过NULL
SELECT CONCAT_WS('-', '2024', '01', '15'); -- '2024-01-15'
SELECT CONCAT_WS(', ', '北京', NULL, '中国'); -- '北京, 中国'(NULL被跳过)
实战:拼接用户地址
SELECT
name,
CONCAT_WS(' ', province, city, district, street) AS 完整地址
FROM users;
-- 如果某个字段为NULL(如district),自动跳过,不会出现多余空格
动手练习
- 基础练习:用CONCAT_WS拼接用户的省市区详细地址,中间用空格分隔。
- 进阶应用:用CONCAT_WS生成CSV格式的数据导出——逗号分隔,NULL自动跳过。
- 项目实战:把项目中的字符串拼接从CONCAT改为CONCAT_WS,处理可能出现的NULL值。