0Pricing
SQL Academy · 课时

字符串连接:|| 与 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 字符串连接:|| 与 CONCAT
  2. UPPER、LOWER、SUBSTRING、REPLACE
  3. TRIM、LPAD、RPAD
  4. 全文搜索简介(tsvector、to_tsquery)
← 返回 SQL Academy