MariaDBでは、CONCAT_WS() ConcatenateWithSeparatorの略である組み込みの文字列関数です。
CONCAT_WS() 引数に対して文字列連結を実行します。最初の引数は残りの引数の区切り文字です。
連結とは、2つ以上の文字列をエンドツーエンドで結合する操作です。
CONCAT_WS() 2つ以上の引数を受け入れます(ただし、2つの引数を指定すると、最初の引数が区切り文字であり、2番目の引数が連結される単一の文字列であるため、何も連結されません)。
構文
構文は次のようになります:
CONCAT_WS(separator,str1,str2,...)
ここでseparator は区切り文字として使用される文字列であり、str1, str2, … 連結する文字列引数を表します。
例
基本的な例は次のとおりです。
SELECT CONCAT_WS( ', ', 'Milk', 'Cheese', 'Bread'); 結果:
+---------------------------------------------+ | CONCAT_WS( ', ', 'Milk', 'Cheese', 'Bread') | +---------------------------------------------+ | Milk, Cheese, Bread | +---------------------------------------------+
この場合、区切り文字としてコンマとスペースを使用して3つの文字列を連結しました。
別のセパレータを使用する別の方法は次のとおりです。
SELECT CONCAT_WS('-', 'Blue', 'Red', 'Green'); 結果:
+----------------------------------------+
| CONCAT_WS('-', 'Blue', 'Red', 'Green') |
+----------------------------------------+
| Blue-Red-Green |
+----------------------------------------+
CONCAT_WS() CONCAT()に似ています 働き。 CONCAT_WS()の利点の1つ CONCAT()を介して 多くの文字列を連結すると明らかになります。
CONCAT()を使用して前の例を実行するには 、各文字列の間にセパレータを繰り返す必要があります。
このように:
SELECT CONCAT('Blue', '-', 'Red', '-', 'Green'); 結果:
+------------------------------------------+
| CONCAT('Blue', '-', 'Red', '-', 'Green') |
+------------------------------------------+
| Blue-Red-Green |
+------------------------------------------+ 連結する文字列がたくさんあると、これは扱いにくくなる可能性があります。
セパレータなし
セパレータとして空の文字列を指定すると、セパレータなしで文字列が連結されます:
SELECT CONCAT_WS('', 'Blue', 'Red', 'Green'); 結果:
+---------------------------------------+
| CONCAT_WS('', 'Blue', 'Red', 'Green') |
+---------------------------------------+
| BlueRedGreen |
+---------------------------------------+
この場合、CONCAT()を使用した場合と同じ結果が得られます。 これらの3つの文字列を連結します。
空の場合でも、セパレータを提供することが重要です。区切り文字を指定しないと、最初の連結文字列が区切り文字として使用されますが、これはおそらく必要なものではありません。
例:
SELECT CONCAT_WS('Blue', 'Red', 'Green', 'Orange'); 結果:
+---------------------------------------------+
| CONCAT_WS('Blue', 'Red', 'Green', 'Orange') |
+---------------------------------------------+
| RedBlueGreenBlueOrange |
+---------------------------------------------+
この場合、Blue は最初の引数であるため、最終的には区切り文字として使用されます。
ヌル引数の連結
CONCAT_WS()のもう1つのメリット CONCAT()を超えています nullということです -安全な。
連結する引数のいずれかがnullの場合 、CONCAT_WS() それらを無視します。 CONCAT() 一方、関数はnullを返します (Oracleモードでない限り、nullは無視されます。 引数)。
CONCAT_WS()を呼び出しましょう nullを使用 引数:
SELECT CONCAT_WS('-', 'Blue', NULL, 'Green'); 結果:
+---------------------------------------+
| CONCAT_WS('-', 'Blue', NULL, 'Green') |
+---------------------------------------+
| Blue-Green |
+---------------------------------------+
予想どおり、CONCAT_WS() null引数をスキップし、残りの引数を連結しました。
つまり、区切り文字として空の文字列を指定すると、CONCAT_WS()を使用できます。 nullとして -CONCAT()の安全なバージョン :
SELECT CONCAT_WS('', 'Blue', NULL, 'Green'); 結果:
+--------------------------------------+
| CONCAT_WS('', 'Blue', NULL, 'Green') |
+--------------------------------------+
| BlueGreen |
+--------------------------------------+ ヌルセパレーター
nullを提供する セパレーターは別の話です。これを行うと、nullが返されます 。
SELECT CONCAT_WS(NULL, 'Blue', 'Red', 'Green'); 結果:
+-----------------------------------------+ | CONCAT_WS(NULL, 'Blue', 'Red', 'Green') | +-----------------------------------------+ | NULL | +-----------------------------------------+
バイナリ文字列
引数のいずれかがバイナリ文字列の場合、結果はバイナリ文字列になります。
SELECT CONCAT_WS(', ', BINARY 'Apple', 'Orange'); 結果:
+-------------------------------------------+
| CONCAT_WS(', ', BINARY 'Apple', 'Orange') |
+-------------------------------------------+
| Apple, Orange |
+-------------------------------------------+
COLLATION()を使用できます 結果の照合をチェックする関数:
SELECT COLLATION(CONCAT_WS(', ', BINARY 'Apple', 'Orange')); 結果:
+------------------------------------------------------+
| COLLATION(CONCAT_WS(', ', BINARY 'Apple', 'Orange')) |
+------------------------------------------------------+
| binary |
+------------------------------------------------------+
BINARYを削除した場合 演算子、別の結果が得られます:
SELECT COLLATION(CONCAT_WS(', ', 'Apple', 'Orange')); 結果:
+-----------------------------------------------+
| COLLATION(CONCAT_WS(', ', 'Apple', 'Orange')) |
+-----------------------------------------------+
| utf8_general_ci |
+-----------------------------------------------+ 単一の引数
CONCAT_WS()を呼び出す 引数が1つしかない場合は、エラーが返されます:
SELECT CONCAT_WS('Blue'); 結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT_WS'
引数がありません
CONCAT_WS()を呼び出す 引数を渡さないとエラーが発生します:
SELECT CONCAT_WS(); 結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT_WS'