MariaDBでは、CONCAT() は、引数に対して文字列連結を実行する組み込みの文字列関数です。引数を連結した結果の文字列を返します。
連結とは、2つ以上の文字列をエンドツーエンドで結合する操作です。
CONCAT() 1つ以上の引数を受け入れ、それらはすべて単一の連結文字列として返されます。
構文
構文は次のようになります:
CONCAT( str1, str2, ... )
ここで、str1, str2, … 連結する文字列引数を表します。
例
基本的な例は次のとおりです。
SELECT CONCAT('Homer', 'Jay'); 結果:
+------------------------+
| CONCAT('Homer', 'Jay') |
+------------------------+
| HomerJay |
+------------------------+ この場合、2つの文字列を連結しました。
ここでも同じですが、今回は間にスペースを追加します:
SELECT CONCAT('Homer', ' ', 'Jay'); 結果:
+-----------------------------+
| CONCAT('Homer', ' ', 'Jay') |
+-----------------------------+
| Homer Jay |
+-----------------------------+ この場合、3つの文字列を連結しました。
これが5つです:
SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson'); 結果:
+---------------------------------------------+
| CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |
+---------------------------------------------+
| Homer Jay Simpson |
+---------------------------------------------+ バイナリ文字列
引数のいずれかがバイナリ文字列の場合、結果はバイナリ文字列になります。
SELECT CONCAT(BINARY 'Homer', 'Jay'); 結果:
+-------------------------------+ | CONCAT(BINARY 'Homer', 'Jay') | +-------------------------------+ | HomerJay | +-------------------------------+
COLLATION()を使用できます 結果の照合をチェックする関数:
SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay')); 結果:
+------------------------------------------+ | COLLATION(CONCAT(BINARY 'Homer', 'Jay')) | +------------------------------------------+ | binary | +------------------------------------------+
BINARYを削除した場合 演算子、別の結果が得られます:
SELECT COLLATION(CONCAT('Homer', 'Jay')); 結果:
+-----------------------------------+
| COLLATION(CONCAT('Homer', 'Jay')) |
+-----------------------------------+
| utf8_general_ci |
+-----------------------------------+
また、MariaDBのドキュメントによると、数値引数は同等のバイナリ文字列形式に変換されます。これを回避するには、明示的な型キャストを実行します(CAST()を使用)。 またはCONVERT() 。
ヌル引数
引数のいずれかがnullの場合 、CONCAT() nullを返します 。
ただし、例外が1つあります。Oracleモードの場合(つまり、sql_mode=ORACLE )、任意のnull 引数は単に無視されます。
まず、CONCAT()の方法を見てみましょう。 デフォルトモードで動作します。
セッションをデフォルトモードに設定します:
SET SESSION sql_mode=DEFAULT;
次に、CONCAT()を実行します nullを使用 引数:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); 結果:
+--------------------------------------------+
| CONCAT('Homer', ' ', null, ' ', 'Simpson') |
+--------------------------------------------+
| NULL |
+--------------------------------------------+
予想どおり、結果はnullです。 。
それでは、セッションをOracleモードに切り替えましょう:
SET SESSION sql_mode=ORACLE;
それでは、前のCONCAT()を実行してみましょう。 もう一度例:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); 結果:
+--------------------------------------------+
| CONCAT('Homer', ' ', null, ' ', 'Simpson') |
+--------------------------------------------+
| Homer Simpson |
+--------------------------------------------+
今回はnullを無視しました 引数、および残りのすべての非nullを連結しました 引数。よく見ると、両方のスペースが連結されていることがわかります。そのため、Homerの間に2つのスペースがあります。 およびSimpson 。
nullの場合 -安全な代替手段、CONCAT_WS()を使用 。その関数はnullを無視します Oracleモードでない場合でも、値。
または、IFNULL()を使用することもできます nullの代替(文字列)値を提供する 値(空の文字列など)。
単一の引数
CONCAT()を呼び出す 引数が1つしかない場合は、その引数を返すだけです:
SELECT CONCAT('Homer'); 結果:
+-----------------+
| CONCAT('Homer') |
+-----------------+
| Homer |
+-----------------+ 引数がありません
CONCAT()を呼び出す 引数を渡さないとエラーが発生します:
SELECT CONCAT(); 結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT'