SQL CONCAT関数を使った2つ以上の文字列の連結

概要: このチュートリアルでは、SQL CONCAT関数を使用して2つ以上の文字列を1つの文字列に連結する方法を学習します。

SQL CONCAT関数の紹介

SQLのCONCAT 関数は、2つ以上の文字列を1つの文字列に連結します。 以下はCONCAT関数の構文を示しています。

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

文字列を連結するには、文字列をカンマで区切った引数リストとして関数に渡します。

CONCAT関数は、入力文字列の組み合わせである文字列を返します。 引数のいずれかがNULLの場合、NULLを返します。(NULL値をより効果的に処理するには、IS NULL演算子、またはCOALESCENULLIF関数を使用できます。)

ほとんどのリレーショナルデータベースシステムはCONCAT関数をサポートしていますが、それらにはいくつかの違いがあります。 例えば、MySQL CONCAT関数は2つ以上の文字列を連結できますが、Oracle CONCAT関数は正確に2つの文字列を連結します。

CONCAT関数を使用する以外にも、連結演算子を使用できます。 例えば、OracleとPostgreSQLでは、||演算子を使用して2つ以上の文字列を連結できます。 Microsoft SQL Serverでは、+演算子を使用します。

SQL CONCATの例

次のステートメントは、CONCAT関数を使用して2つの文字列を連結します。

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関数を2回適用する必要があります。次のクエリを参照してください。

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関数を使用して2つ以上の文字列を1つの文字列に連結する方法を学習しました。

このチュートリアルは役に立ちましたか?