MySQL 如何在表的列上应用CONCAT()函数


<!–

–>

MySQL 如何在表的列上应用CONCAT()函数

在MySQL数据库中,很多时候我们需要把几个列的内容合并成一个字符串,这时候就需要用到CONCAT()函数。在这篇文章中,我们将会探讨如何在MySQL表的列上应用CONCAT()函数。

阅读更多:

CONCAT()函数的语法

CONCAT()函数的语法如下:

(adsbygoogle = window.adsbygoogle || []).push({});

CONCAT(str1, str2, str3, ..., strN)

其中str1到strN表示需要合并的字符串,可以是列名、常量或表达式。

在SELECT语句中使用CONCAT()函数

我们可以在SELECT语句中使用CONCAT()函数,将多个列合并成一个字符串,然后进行输出。

例如,我们有一个名为employees的表,其中包含员工的姓和名。我们想要把这两列合并成一个完整的名称。可以使用如下的SQL语句:

SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;

这里,我们使用了CONCAT(first_name, ' ', last_name)语句,将first_name列和last_name列的值合并,并在中间加了一个空格。然后,我们使用AS关键字为合并后的列起了一个别名full_name

输出结果如下:

+---------------------------+
| full_name                 |
+---------------------------+
| John Doe                  |
| Jane Doe                  |
| Bob Smith                 |
| Alice Johnson             |
...

在UPDATE语句中使用CONCAT()函数

我们同样可以在UPDATE语句中使用CONCAT()函数,将多个列的值合并成一个字符串,并更新到表中指定的列中。

(adsbygoogle = window.adsbygoogle || []).push({});

例如,我们有一个名为customers的表,其中包含客户的姓和名。我们想要把这两列合并成一个完整的名称,并把结果更新到另一个列full_name中。可以使用如下的SQL语句:

UPDATE customers SET full_name = CONCAT(first_name, ' ', last_name);

这里,我们使用了CONCAT(first_name, ' ', last_name)语句,将first_name列和last_name列的值合并,并在中间加了一个空格。然后,我们将合并后的结果更新到了full_name列中。

带条件的CONCAT()函数应用

有时候,我们需要在合并列的同时,加上一些条件。例如,我们只想要合并那些salary大于10000的员工的姓名和薪水,并在中间加上一个短横线。

可以使用如下的SQL语句:

SELECT CONCAT(first_name, ' ', last_name, ' - ', salary) AS detail 
FROM employees 
WHERE salary > 10000;

这里,我们使用了CONCAT(first_name, ' ', last_name, ' - ', salary)语句,将first_name列和last_name列的值合并,并在中间加了一个空格和一个短横线,最后加上salary列的值。然后,我们使用WHERE子句限制了只输出salary大于10000的员工。

输出结果如下:

(adsbygoogle = window.adsbygoogle || []).push({});

+-----------------+
| detail          |
+-----------------+
| John Doe - 15000 |
| Jane Doe - 20000 |
| Alice Johnson - 12000 |
...

CONCAT_WS()函数

除了CONCAT()函数之外,MySQL还提供了一个更为方便的函数CONCAT_WS()。该函数将多个字符串合并成一个字符串,使用指定的分隔符分隔。

CONCAT_WS()函数的语法如下:

CONCAT_WS(separator, str1, str2, ..., strN)

其中,separator参数为指定的分隔符,可以是一个字符串常量或表达式。str1strN表示需要合并的字符串,可以是列名、常量或表达式。

例如,我们有一个名为sales的表,其中包含商品的名称、价格和数量。我们想要用逗号作为分隔符,将这三个值合并成一个字符串并输出。

可以使用如下的SQL语句:

SELECT CONCAT_WS(',', product_name, price, quantity) as details FROM sales;

这里,我们使用了CONCAT_WS(',', product_name, price, quantity)语句,将product_name列、price列和quantity列的值合并,并在它们之间使用逗号作为分隔符。然后,我们使用AS关键字为合并后的列起了一个别名details

输出结果如下:

+------------------------+
| details                |
+------------------------+
| Chocolate,3.5,10       |
| Notebook,5,2           |
| Pen,1.2,20             |
| Phone case,9.9,5       |
...

我们可以看到,price列和quantity列的值都被合并到了一个字符串中,并使用了指定的分隔符。

使用CONCAT()函数进行字符串拼接

我们还可以在SQL语句中使用CONCAT()函数进行字符串拼接。例如,如果我们想要在查询结果中加入一些固定的文字,可以使用如下的SQL语句:

SELECT CONCAT('The price of product ', product_name, ' is $', price) AS details FROM sales;

这里,我们使用了CONCAT()函数将一些固定的文字和product_name列、price列的值合并,并将结果输出到一个别名为details的列中。

输出结果如下:

+--------------------------------------------+
| details                                    |
+--------------------------------------------+
| The price of product Chocolate is 3.5 | | The price of product Notebook is5        |
| The price of product Pen is 1.2 | | The price of product Phone case is9.9    |
...

结论

在MySQL中,使用CONCAT()函数可以将多个字符串合并成一个字符串。我们可以在SELECT语句和UPDATE语句中使用它,也可以加入一些条件进行筛选。对于需要在多个字符串之间加入分隔符的情况,我们可以使用CONCAT_WS()函数。如果需要对一些固定的文字进行字符串拼接,也可以使用CONCAT()函数。