摘要:在本教學中,您將學習如何使用 SQL CONCAT 函數將兩個或多個字串串連成一個字串。
SQL CONCAT 函數簡介
SQL CONCAT
函數將兩個或多個字串串連成一個字串。以下說明 CONCAT
函數的語法:
CONCAT(string1,string2,..);
Code language: SQL (Structured Query Language) (sql)
若要串連字串,請將字串作為以逗號分隔的引數列表傳遞給函數。
CONCAT
函數會傳回一個字串,該字串是輸入字串的組合。如果其中一個引數為 NULL
,則會傳回 NULL
。(若要更有效地處理 NULL
值,您可以使用 IS NULL
運算子或 COALESCE
和 NULLIF
函數。)
大多數關聯式資料庫系統都支援 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)

如果您使用 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
函數將兩個或多個字串串連成單一字串。