SQL初学者如何有效掌握并使用CONCAT函数?
帮你搞懂SQL里的CONCAT函数——从基础到实际应用
嘿,我完全懂这种卡在一个函数上的感觉——刚学SQL的时候我也对着CONCAT挠过头!别担心,咱们从最基础的开始拆解,再结合你谷歌课堂的数据库项目场景来举例子,保证你能快速上手。
一、CONCAT到底是干啥的?
简单说,CONCAT()就是SQL里用来把多个字符串(或者能转成字符串的字段/值)拼接成一个字符串的工具。不管你是要把名字和姓氏拼起来,还是给数据加个前缀后缀,它都能搞定。
二、基础语法和最简单的例子
基础语法很简单:
CONCAT(值1, 值2, 值3, ...)
这里的“值”可以是:
- 直接写的字符串(要用单引号括起来,比如
'Mr. ') - 表中的字段(比如
first_name、last_name) - 甚至是数字(SQL会自动把它转成字符串)
举个最基础的例子:假设你有个users表,里面有first_name和last_name字段,要把它们拼成完整姓名:
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;
这里的' '是一个空格,用来分隔名和姓,不然结果会变成“张三李四”而不是“张三 李四”。
三、结合你的谷歌课堂项目场景来用
假设你的数据集里有product_id(产品ID)和product_name(产品名),现在要生成一个带标识的产品全称,比如“【ID: 001】 无线耳机”,就可以这么写:
SELECT CONCAT('【ID: ', product_id, '】 ', product_name) AS labeled_product FROM your_project_table;
再比如,如果你的表有order_date(日期)和customer_email,要生成一条类似“2024-05-20 订单来自:jess@example.com”的描述:
SELECT CONCAT(order_date, ' 订单来自:', customer_email) AS order_description FROM orders;
四、容易踩的坑,帮你避坑
- 空值问题:如果拼接的字段里有
NULL,整个CONCAT的结果会变成NULL!比如CONCAT('Hello ', NULL)结果是NULL。如果要避免这个,可以用CONCAT_WS()(WS是With Separator的意思),它会自动忽略空值,还能统一指定分隔符:-- 用CONCAT_WS的话,即使last_name是NULL,也只会显示first_name SELECT CONCAT_WS(' ', first_name, last_name) AS full_name FROM users; - 数字拼接:如果要拼接数字和字符串,不用特意转类型,SQL会自动处理,但如果是要格式化数字(比如补零),可能需要配合
LPAD()这类函数,比如把product_id补成3位:SELECT CONCAT('PROD-', LPAD(product_id, 3, '0')) AS product_code FROM products; -- 比如product_id是5,结果就是PROD-005
五、练手小建议
你可以拿自己谷歌课堂项目里的表来做测试:
- 先选一个有两个字符串字段的表,尝试把它们拼起来,加个分隔符
- 试试给拼接结果加个固定前缀或后缀(比如给所有用户名加个
@yourdomain.com) - 故意找一个有空值的字段,对比
CONCAT和CONCAT_WS的区别
多试几次,你就能发现它的用法其实特别灵活!
内容的提问来源于stack exchange,提问作者Jess




