MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのCONCAT_WS()関数とは?区切り文字を使った文字列連結の方法を解説

MySQLのCONCAT_WS()関数は、2つ以上の文字列を区切り文字(セパレータ)を挟みながら連結するための関数です。関数名に含まれる「WS」は「WITH SEPARATOR(セパレータ付き)」の略で、「区切り文字付き連結関数」と呼ぶことができます。

基本構文

CONCAT_WS(区切り文字, 文字列1, 文字列2, …, 文字列N)

第1引数に区切り文字を指定し、続けて連結したい文字列を順番に渡します。なお、区切り文字が数値以外の場合は、必ず引用符(シングルクォートなど)で囲む必要があります。

使用例1:空白を区切り文字にする

mysql> SELECT CONCAT_WS(' ','New', 'Delhi');

+-------------------------------+
| CONCAT_WS(' ','New', 'Delhi') |
+-------------------------------+
| New Delhi                     |
+-------------------------------+

1 row in set (0.00 sec)

この例では、半角スペース「' '」が区切り文字として機能し、「New」と「Delhi」という2つの文字列の間に挿入されて連結されています。

使用例2:任意の文字列を区切り文字にする

mysql> SELECT CONCAT_WS(' is our ','Delhi','Capital');

+-----------------------------------------+
| CONCAT_WS(' is our ','Delhi','Capital') |
+-----------------------------------------+
| Delhi is our Capital                    |
+-----------------------------------------+

1 row in set (0.00 sec)

この例では、「 is our 」という文字列が区切り文字として機能し、「Delhi」と「Capital」の間に挿入されています。このように、単純な記号だけでなく、意味のあるフレーズを区切り文字として使うことも可能です。

NULLの扱いについて

CONCAT_WS()関数のもうひとつの特徴として、引数にNULLが含まれていてもエラーにならず、NULLをスキップして残りの文字列を連結するという点が挙げられます。ただし、空文字列('')はNULLとして扱われないため、そのまま連結される点には注意が必要です。この特性により、CONCAT_WS()は通常のCONCAT()関数よりもNULLに対して安全に文字列連結を行える便利な関数といえます。

  1. MySQLのINSERT IGNOREステートメントとは?重複データの挿入を防ぐ方法

    INSERT IGNOREステートメントは、MySQLのテーブルに重複したデータが挿入されるのを防ぐために使用されます。通常のINSERT文の代わりにINSERT IGNOREコマンドを使うと、新規レコードが既存レコードと重複していなければ通常どおり挿入されますが、重複している場合はIGNOREキーワードによってMySQLがそのレコードを黙って破棄し、エラーを発生させません。 基本構文 INSERT IGNORE INTO table_name(...) ここで、table_nameは値を挿入したいテーブルの名前です。カラム名とVALUES句の指定方法は通常のINSERT文と同じです。 動作の

  2. MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説

    MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字