sql >> データベース >  >> RDS >> Mysql

MySQLで連結文字列にセパレータを追加する方法– CONCAT_WS()

    MySQLでは、CONCAT_WS() 関数を使用すると、連結された文字列にセパレータを追加できます。 CONCAT()を使用する場合 関数の場合、セパレータはありません(各文字列引数の間に引数としてセパレータを明示的に追加しない限り)。

    CONCAT_WS()の一般的な使用法 関数は、コンマ区切りのリストを作成することです。

    次に例を示します:

    SELECT CONCAT_WS(',','Sydney', 'Australia') AS Location;
    

    結果:

    +------------------+
    | Location         |
    +------------------+
    | Sydney,Australia |
    +------------------+
    

    必要に応じて、そこにスペースを追加できます:

    SELECT CONCAT_WS(',','Sydney', 'Australia') AS Location;
    

    結果:

    +-------------------+
    | Location          |
    +-------------------+
    | Sydney, Australia |
    +-------------------+
    

    セパレーター

    区切り文字はカンマでなければならないことは言うまでもありません。区切り文字は任意の文字列にすることができます。

    これは前の例と同じですが、これは別のセパレータを使用している点が異なります。

    SELECT CONCAT_WS(' - ','Paris', 'France') AS Location;
    

    結果:

    +----------------+
    | Location       |
    +----------------+
    | Paris - France |
    +----------------+
    

    データベースの例

    データベースからデータを取得し、2つの列をコンマで区切って1つに結合する例を次に示します。

    SELECT CONCAT_WS(', ', city.Name, country.Name ) AS Location
    FROM city
    INNER JOIN country ON
    city.CountryCode = country.Code
    WHERE country.Code = 'NZL';
    

    結果:

    +---------------------------+
    | Location                  |
    +---------------------------+
    | Auckland, New Zealand     |
    | Christchurch, New Zealand |
    | Manukau, New Zealand      |
    | North Shore, New Zealand  |
    | Waitakere, New Zealand    |
    | Wellington, New Zealand   |
    | Dunedin, New Zealand      |
    | Hamilton, New Zealand     |
    | Lower Hutt, New Zealand   |
    +---------------------------+
    

    NULL値

    引数のいずれかがNULLの場合 値の場合、MySQLはその値とそのセパレータをスキップしますが、それでも他の値を処理します。

    例:

    SELECT CONCAT_WS(', ','Auckland', NULL, 'New Zealand') AS Location;
    

    結果:

    +-----------------------+
    | Location              |
    +-----------------------+
    | Auckland, New Zealand |
    +-----------------------+
    

    NULL値セパレーター

    セパレータ自体がNULLの場合 値の場合、連結操作はNULLを返します 。

    例:

    SELECT CONCAT_WS(NULL,'Auckland', NULL, 'New Zealand') AS Location;
    

    結果:

    +----------+
    | Location |
    +----------+
    | NULL     |
    +----------+
    

    これは、MySQLとT-SQL(SQL Server、Azure)の違いの1つです。 T-SQLで、区切り文字がNULLの場合 valueの場合、文字列値は引き続き連結されますが、区切り文字はありません。


    1. 機密情報を顧客から保護する4つの方法

    2. SQL Serverのxml出力にxmlエンコーディング<?xml version =1.0 encoding =UTF-8?>を追加する方法

    3. 2つの日付の間の営業日または営業時間を取得する方法

    4. varchar []にarray_agg()を使用する方法