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

這個教學對您有幫助嗎?