使用 SQL CONCAT 函数串联两个或多个字符串

摘要:在本教程中,您将学习如何使用 SQL CONCAT 函数将两个或多个字符串串联成一个字符串。

SQL CONCAT 函数简介

SQL CONCAT 函数将两个或多个字符串串联成一个字符串。下面展示了 CONCAT 函数的语法

CONCAT(string1,string2,..);Code language: SQL (Structured Query Language) (sql)

要串联字符串,可将字符串作为以逗号分隔的参数列表传递给该函数。

CONCAT 函数返回一个字符串,此字符串为输入字符串的组合。如果参数中有一个为 NULL,则返回 NULL。(要更有效地处理 NULL 值,可使用 IS NULL 运算符或 COALESCENULLIF 函数。)

大多数关系数据库系统支持 CONCAT 函数,但它们之间存在一些差异。例如,MySQL CONCAT 函数允许您串联两个以上的字符串,而 Oracle CONCAT 函数只串联两个字符串。

除了使用 CONCAT 函数,您还可以使用串联运算符,例如,在 Oracle 和 PostgreSQL 中,您可使用 || 运算符串联两个或多个字符串。而在 Microsoft SQL Server 中,您使用 + 运算符。

SQL CONCAT 示例

以下语句使用 CONCAT 函数串联两个字符串

SELECT CONCAT('SQL CONCAT function', ' demo');Code language: SQL (Structured Query Language) (sql)
        concat
----------------------
 SQL CONCAT function demo
(1 row)Code language: SQL (Structured Query Language) (sql)

以下语句使用 CONCAT 函数通过串联名字、空格和姓氏来返回员工的全名。

SELECT 
    CONCAT(first_name, ' ', last_name) AS name
FROM
    employees
ORDER BY name;Code language: SQL (Structured Query Language) (sql)
SQL CONCAT example

如果您使用 Oracle 数据库,您必须应用两次 CONCAT 函数才能实现相同的结果。参见以下查询

SELECT 
    CONCAT(CONCAT(first_name, ' '), last_name) AS name
FROM
    employees
ORDER BY name;Code language: SQL (Structured Query Language) (sql)

内部的 CONCAT 函数将名字与空格串联,外部的 CONCAT 函数将内部 CONCAT 函数的结果与姓氏串联。

如果您使用 Oracle(以及 PostgreSQL)中的串联运算符,则会更加清晰。

SELECT 
    (first_name || ' ' || last_name) AS name
FROM
    employees
ORDER BY name;Code language: SQL (Structured Query Language) (sql)

在 Microsoft SQL Server 中,您将使用以下查询

SELECT 
    (first_name + ' ' + last_name) AS name
FROM
    employees
ORDER BY name;Code language: SQL (Structured Query Language) (sql)

如果您使用 MySQL 或 PostgreSQL,您可以使用 CONCAT_WS 函数使用分隔符串联字符串。

CONCAT_WS(separator,string1,string2,...);Code language: SQL (Structured Query Language) (sql)

例如,您可以使用 CONCAT_WS 函数如下构建员工全名

SELECT 
    CONCAT_WS(' ',first_name,last_name) AS name
FROM
    employees
ORDER BY name;Code language: SQL (Structured Query Language) (sql)

在本教程中,您学习了如何使用 SQL CONCAT 函数将两个或多个字符串串联成一个字符串。

本教程是否有用?