MariaDB CONCAT_WS() 函数的基础用法与实例

本文将介绍一个常用的字符串函数,CONCAT_WS(),它用于连接多个字符串,并在每个字符串之间插入一个分隔符。

发布于

MariaDB 是一个开源的关系型数据库管理系统,它是 MySQL 的一个分支,兼容 MySQL 的语法和功能。MariaDB 提供了许多内置的函数,用于对数据进行各种操作和处理。本文将介绍一个常用的字符串函数,CONCAT_WS(),它用于连接多个字符串,并在每个字符串之间插入一个分隔符。

语法

CONCAT_WS() 函数的语法如下:

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

其中,separator 是要插入的分隔符,可以是一个常量,一个变量,或者一个表达式。str1, str2, ..., strN 是要连接的字符串,可以是任意类型的表达式,可以是常量,变量,列名,或者子查询等。参数的个数可以是任意多,但至少要有两个。如果 separator 或者任何一个字符串为 NULL,则函数忽略该参数,不进行连接。

CONCAT_WS() 函数返回的是一个字符串,它是将 str1, str2, ..., strNseparator 连接起来的结果。如果所有的参数都为 NULL,则函数返回 NULL。如果没有任何字符串被连接,即只有 separator 一个参数,或者所有的字符串都为 NULL,则函数返回一个空字符串 ''

CONCAT_WS() 函数的主要用途是方便地拼接多个字符串,并在每个字符串之间添加一个分隔符,例如,用逗号分隔多个列的值,或者用空格分隔多个单词等。CONCAT_WS() 函数与 CONCAT() 函数的区别是,CONCAT_WS() 函数可以指定一个分隔符,而 CONCAT() 函数没有分隔符;另外,CONCAT_WS() 函数会忽略 NULL 值,而 CONCAT() 函数会将 NULL 值视为 ''

实例

下面给出一些使用 CONCAT_WS() 函数的实例,以及相应的代码和输出结果。

用逗号分隔多个常量字符串

SELECT CONCAT_WS(',', 'Hello', 'world', '!');
+---------------------------------------+
| CONCAT_WS(',', 'Hello', 'world', '!') |
+---------------------------------------+
| Hello,world,!                         |
+---------------------------------------+

用空格分隔多个变量字符串

SET @name = 'MariaDB';
SET @version = '10.6.4';
SELECT CONCAT_WS(' ', @name, @version);
+---------------------------------+
| CONCAT_WS(' ', @name, @version) |
+---------------------------------+
| MariaDB 10.6.4                  |
+---------------------------------+

用斜杠分隔多个列名的值

CREATE TABLE test (
  id INT,
  year INT,
  month INT,
  day INT
);

INSERT INTO test VALUES (1, 2021, 10, 1), (2, 2020, 12, 31);

SELECT id, CONCAT_WS('/', year, month, day) AS date FROM test;
+----+------------+
| id | date       |
+----+------------+
|  1 | 2021/10/1  |
|  2 | 2020/12/31 |
+----+------------+

用换行符分隔多个表达式的值

SELECT CONCAT_WS('\n', 'Hello', UPPER('world'), '!');
+-----------------------------------------------+
| CONCAT_WS('\n', 'Hello', UPPER('world'), '!') |
+-----------------------------------------------+
| Hello
WORLD
!                                               |
+-----------------------------------------------+

忽略 NULL 值的连接

SELECT CONCAT_WS(',', 'Hello', NULL, 'world', NULL, '!');
+---------------------------------------------------+
| CONCAT_WS(',', 'Hello', NULL, 'world', NULL, '!') |
+---------------------------------------------------+
| Hello,world,!                                     |
+---------------------------------------------------+

相关函数

除了 CONCAT_WS() 函数外,MariaDB 还提供了一些其他的字符串函数,用于对字符串进行不同的操作和处理。下面列举了一些常用的字符串函数,并给出了简单的介绍和举例。

  • CONCAT() 函数:连接多个字符串,返回一个拼接后的字符串。
  • LENGTH() 函数:返回一个字符串的长度,以字节为单位。
  • SUBSTRING() 函数:从一个字符串中截取一部分子字符串,返回一个子字符串。
  • REPLACE() 函数:用一个字符串替换一个字符串中的所有匹配的子字符串,返回一个替换后的字符串。
  • UPPER() 函数:将一个字符串中的所有字母转换为大写,返回一个大写的字符串。

例如,下面的语句使用了 CONCAT() 函数和 REPLACE() 函数,将两个字符串连接起来,并用叹号替换逗号,返回一个新的字符串。

SELECT CONCAT('Hello', ', world', '!'), REPLACE(CONCAT('Hello', ', world', '!'), ',', '!');
+---------------------------------+----------------------------------------------------+
| CONCAT('Hello', ', world', '!') | REPLACE(CONCAT('Hello', ', world', '!'), ',', '!') |
+---------------------------------+----------------------------------------------------+
| Hello, world!                   | Hello! world!                                      |
+---------------------------------+----------------------------------------------------+

结论

本文介绍了 MariaDB 的一个常用的字符串函数,CONCAT_WS(),它用于连接多个字符串,并在每个字符串之间插入一个分隔符。本文还介绍了函数的语法,给出了一些实例,以及列举了一些相关的函数。