MySQL concat()函數

在本教學中,您將學習使用MySQL CONCATCONCAT_WS函數將兩個或多個字串連接在一起的各種方法。

要連接兩個或多個引用的字串值,請將字串放在一起,如下所示:

SELECT 'MySQL ' 'String ' 'Concatenation';

執行上面查詢語句,得到以下結果 -

mysql> SELECT 'MySQL ' 'String ' 'Concatenation';
+----------------------------+
| MySQL                      |
+----------------------------+
| MySQL String Concatenation |
+----------------------------+
1 row in set

與其他資料庫管理系統相比,MySQL字串連接更為清晰。 例如,如果您使用PostgreSQLOracle,則必須使用字串連接運算符||。 在Microsoft SQL Server中,您可以使用加法算術運算符(+)連接字串值。

除了使用空格進行字串連接之外,MySQL還提供了兩個連接字串值的函數:CONCATCONCAT_WS

MySQL CONCAT函數

MySQL CONCAT()函數需要一個或多個字串參數,並將它們連接成一個字串。CONCAT()函數需要至少一個參數,否則會引起錯誤。

下麵說明了CONCAT()函數的語法。

CONCAT(string1,string2, ... );

CONCAT()函數在連接之前將所有參數轉換為字串類型。如果任何參數為NULL,則CONCAT()函數返回NULL值。

以下語句連接兩個引用的字串:MySQLCONCAT

SELECT CONCAT('MySQL','CONCAT');

執行上面查詢語句,得到以下結果 -

mysql> SELECT CONCAT('MySQL','CONCAT');
+--------------------------+
| CONCAT('MySQL','CONCAT') |
+--------------------------+
| MySQLCONCAT              |
+--------------------------+
1 row in set

如果添加NULL值,則CONCAT函數將返回一個NULL值,如下所示:

mysql> SELECT CONCAT('MySQL',NULL,'CONCAT');
+-------------------------------+
| CONCAT('MySQL',NULL,'CONCAT') |
+-------------------------------+
| NULL                          |
+-------------------------------+
1 row in set

請參見示例資料庫(zaixiandb)中的customers表,其結構如下所示 -

mysql> desc customers;
+------------------------+---------------+------+-----+---------+-------+
| Field                  | Type          | Null | Key | Default | Extra |
+------------------------+---------------+------+-----+---------+-------+
| customerNumber         | int(11)       | NO   | PRI | NULL    |       |
| customerName           | varchar(50)   | NO   |     | NULL    |       |
| contactLastName        | varchar(50)   | NO   |     | NULL    |       |
| contactFirstName       | varchar(50)   | NO   |     | NULL    |       |
| phone                  | varchar(50)   | NO   |     | NULL    |       |
| addressLine1           | varchar(50)   | NO   |     | NULL    |       |
| addressLine2           | varchar(50)   | YES  |     | NULL    |       |
| city                   | varchar(50)   | NO   |     | NULL    |       |
| state                  | varchar(50)   | YES  |     | NULL    |       |
| postalCode             | varchar(15)   | YES  |     | NULL    |       |
| country                | varchar(50)   | NO   |     | NULL    |       |
| salesRepEmployeeNumber | int(11)       | YES  | MUL | NULL    |       |
| creditLimit            | decimal(10,2) | YES  |     | NULL    |       |
+------------------------+---------------+------+-----+---------+-------+
13 rows in set

要獲取聯繫人的全名,您可以使用CONCAT函數將名字,空格,姓氏連接,如下查詢語句:

SELECT
    concat(contactFirstName,' ',contactLastName) Fullname
FROM
    customers;

執行上面查詢語句,得到以下結果 -

mysql> SELECT
    concat(contactFirstName,' ',contactLastName) Fullname
FROM
    customers;
+--------------------------+
| Fullname                 |
+--------------------------+
| Carine  Schmitt          |
| Jean King                |
| Peter Ferguson           |
| Janine  Labrune          |
| Jonas  Bergulfsen        |
***** 此處省略了一大波數據 ****
| Sue Taylor               |
| Thomas  Minsu            |
| Valarie Franco           |
| Tony Snowden             |
+--------------------------+
122 rows in set

MySQL CONCAT_WS函數:使用分隔符號連接字串

MySQL提供了一種特殊形式的CONCAT()函數:CONCAT_WS()函數。CONCAT_WS()函數將兩個或多個字串值與預定義的分隔符號相連接。

下麵說明了CONCAT_WS()函數的語法:

CONCAT_WS(seperator,string1,string2, ... );

第一個參數是其他參數:string1string2...的分隔符號。

CONCAT_WS函數在字串參數之間添加分隔符號,並返回單個字串,並在字串參數之間插入分隔符號。

以下語句連接兩個字串值:MaxSu,並用逗號分隔這兩個字串:

SELECT CONCAT_WS(',','Max','Su');

執行上面查詢語句,得到以下結果 -

mysql> SELECT CONCAT_WS(',','Max','Su');
+---------------------------+
| CONCAT_WS(',','Max','Su') |
+---------------------------+
| Max,Su                    |
+---------------------------+
1 row in set

當且僅當作為分隔符號的第一個參數為NULL時,CONCAT_WS函數才返回NULL。請參閱以下示例:

mysql> SELECT CONCAT_WS(NULL ,'Jonathan', 'Minsu');
+--------------------------------------+
| CONCAT_WS(NULL ,'Jonathan', 'Minsu') |
+--------------------------------------+
| NULL                                 |
+--------------------------------------+
1 row in set

CONCAT函數不同,CONCAT_WS函數在分隔符號參數之後跳過NULL值。 換句話說,它忽略NULL值。

mysql> SELECT CONCAT_WS(',','Jonathan', 'Minsu',NULL);
+-----------------------------------------+
| CONCAT_WS(',','Jonathan', 'Minsu',NULL) |
+-----------------------------------------+
| Jonathan,Minsu                          |
+-----------------------------------------+
1 row in set

以下語句使用CONCAT_WS函數構造完整的地址:

 SELECT
    CONCAT_WS(CHAR(13),
            CONCAT_WS(' ', contactLastname, contactFirstname),
            addressLine1,
            addressLine2,
            CONCAT_WS(' ', postalCode, city),
            country,
            CONCAT_WS(CHAR(13), '')) AS Customer_Address
FROM
    customers;

執行上面查詢語句,得到以下結果 -

+----------------------------------------------------------------------------------+
| Customer_Address                                                                 |
+----------------------------------------------------------------------------------+
| Schmitt Carine
54, rue Royale
44000 Nantes
France |
************ 此處省略一大波數據 *******

在本教學中,您已經學習了如何使用MySQL CONCATCONCAT_WS函數將一個或多個字串值連接到成單個字串。


上一篇: MySQL函數 下一篇: MySQL+Node.js連接和操作