カテゴリ:

文字列とバイナリ関数 (一般)

CONCAT、 ||

1つ以上の文字列を連結するか、1つ以上のバイナリ値を連結します。

|| 演算子は CONCAT の代替構文を提供し、少なくとも2つの引数が必要です。

こちらもご参照ください。

CONCAT_WS

構文

CONCAT( <expr> [ , <expr> ... ] )

<expr> || <expr> [ || <expr> ... ]
Copy

引数

expr

入力式はすべて文字列であるか、すべてバイナリ値である必要があります。

戻り値

戻り値のデータ型は、入力値のデータ型と同じです。

入力値のいずれかが NULL の場合、 NULL を返します。

使用上の注意

GET_DDL などのメタデータ関数は、入力として定数のみを受け入れます。連結入力はエラーを生成します。

照合順序の詳細

2つの文字列を連結します。

SELECT CONCAT('George Washington ', 'Carver');
Copy
+----------------------------------------+
| CONCAT('GEORGE WASHINGTON ', 'CARVER') |
|----------------------------------------|
| George Washington Carver               |
+----------------------------------------+

2つの VARCHAR 列を連結します。まず、テーブルを作成してデータを挿入します。

CREATE OR REPLACE TABLE concat_function_example (s1 VARCHAR, s2 VARCHAR, s3 VARCHAR);
INSERT INTO concat_function_example (s1, s2, s3) VALUES
  ('co', 'd', 'e'),
  ('Colorado ', 'River ', NULL);
Copy

クエリを実行します。

SELECT CONCAT(s1, s2)
  FROM concat_function_example;
Copy
+-----------------+
| CONCAT(S1, S2)  |
|-----------------|
| cod             |
| Colorado River  |
+-----------------+

3つ以上の文字列を連結します。

SELECT CONCAT(s1, s2, s3)
  FROM concat_function_example;
Copy
+--------------------+
| CONCAT(S1, S2, S3) |
|--------------------|
| code               |
| NULL               |
+--------------------+

NULL でない文字列を連結するには、 IFF 関数と CONCAT 関数を併用します。

SELECT CONCAT(
    IFF(s1 IS NULL, '', s1),
    IFF(s2 IS NULL, '', s2),
    IFF(s3 IS NULL, '', s3)) AS concat_non_null_strings
  FROM concat_function_example;
Copy
+-------------------------+
| CONCAT_NON_NULL_STRINGS |
|-------------------------|
| code                    |
| Colorado River          |
+-------------------------+

関数の代わりに連結演算子 || を使用します。

SELECT 'This ' || 'is ' || 'another ' || 'concatenation ' || 'technique.';
Copy
+--------------------------------------------------------------------+
| 'THIS ' || 'IS ' || 'ANOTHER ' || 'CONCATENATION ' || 'TECHNIQUE.' |
|--------------------------------------------------------------------|
| This is another concatenation technique.                           |
+--------------------------------------------------------------------+