字符串连接:|| 与 CONCAT
使用 || 运算符和 CONCAT() 连接字符串,并理解二者分别如何处理 NULL 输入。
字符串连接:|| 与 CONCAT 是 CoddyKit 上的免费 SQL Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 SQL Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 SQL Academy 课程共包含 4 节课。
标准连接:||
用于连接字符串的 SQL 标准运算符是 ||:
SELECT first_name || ' ' || last_name AS full_name FROM users;
SELECT 'Hello, ' || name || '!' FROM users;|| 与 NULL = NULL
如果任一操作数是 NULL,整个表达式就会变成 NULL。请明确处理:
SELECT first_name || ' ' || NULL; -- NULL
-- Defend with COALESCE:
SELECT first_name || ' ' || COALESCE(last_name, '') FROM users;CONCAT:可安全处理 NULL 的替代方案
CONCAT 会将 NULL 视为空字符串:
SELECT CONCAT(first_name, ' ', last_name) FROM users;
SELECT CONCAT(first_name, ' ', NULL); -- 'first_name ' (no NULL)CONCAT_WS:使用分隔符
对于“使用分隔符连接”这一需求,它最易读:
SELECT CONCAT_WS(' ', title, first_name, middle_initial, last_name) AS pretty_name
FROM users;
-- ' ' between non-NULL fields only混合使用字符串和数字
您可以进行类型转换,也可以依赖隐式转换(PostgreSQL 很严格,因此显式转换更安全):
SELECT 'Order #' || id::TEXT FROM orders;
SELECT CONCAT('Order #', id) FROM orders; -- CONCAT auto-casts构建显示字符串
组合出易读的标签:
SELECT id,
email,
CONCAT_WS(', ', city, region, country) AS location
FROM users;使用 STRING_AGG 连接聚合结果
要连接多行中的值,请使用 STRING_AGG(或 array_agg):
SELECT user_id,
STRING_AGG(name, ', ' ORDER BY name) AS tag_names
FROM user_tags
GROUP BY user_id;使用 FORMAT 构建模板字符串
PostgreSQL 的 format() 采用 printf 风格,并且可以安全处理 NULL:
SELECT format('User %s (id=%s) joined on %s',
full_name, id, created_at::DATE)
FROM users;空字符串与 NULL
请为每一列做出判断:空字符串是否是有效值?如果不是,请将输入中的 '' 当作 NULL:
INSERT INTO contacts (phone) VALUES (NULLIF(:phone, ''));多行字符串字面量
PostgreSQL 支持美元引用,可以在不进行转义的情况下编写多行字符串:
SELECT $$Hello,
'World' — with quotes!$$;
SELECT $custom_tag$ ... $custom_tag$;连接字符串的性能
连接字符串很快——每秒可处理数百万次。成本通常来自行的 I/O,而不是字符串操作。
回顾
标准连接使用 ||,忽略 NULL 使用 CONCAT/CONCAT_WS,模板使用 FORMAT,连接多行使用 STRING_AGG。
快速检查
如果 last_name 是 NULL,first_name || ' ' || last_name 会返回什么?
常见问题解答
「字符串连接:|| 与 CONCAT」课时是免费的吗?
是的 — 「字符串连接:|| 与 CONCAT」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 SQL Academy 课程的其余内容,请升级到 CoddyKit PRO。 SQL Academy 课程共包含 4 节课。
「字符串连接:|| 与 CONCAT」这节课中我会学到什么?
使用 || 运算符和 CONCAT() 连接字符串,并理解二者分别如何处理 NULL 输入。 你通过在浏览器中直接运行的动手代码来练习 SQL Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 SQL Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 SQL Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「字符串连接:|| 与 CONCAT」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 SQL Academy 课中编写并运行代码吗?
能。每节 SQL Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。