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'