- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表数据
- SQL - 约束
- SQL 查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - 更新查询
- SQL - 删除查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接 vs 右连接
- SQL - UNION vs JOIN
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 组合键
- SQL - 候选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - CHECK 约束
- SQL - DEFAULT 约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - CONCAT_WS() 函数
SQL CONCAT_WS() 函数接受一个分隔符和一个或多个字符串值作为参数,并将所有给定的字符串连接/合并在一起,在它们之间放置指定的分隔符,并返回结果。
此函数的第一个参数被视为分隔符。它可以是字符串或数值。如果分隔符值为 NULL,则此函数返回 NULL。
如果字符串值中存在任何空字符串,它们将包含在结果中。但是,如果您将 NULL 作为字符串值(分隔符之后)传递,则它将被忽略。
语法
以下是使用 SQL CONCAT_WS() 函数和两个或多个字符串的语法:
CONCAT_WS(separator, str1, str2, ........strN);
此语法使用 CONCAT_WS 函数和 SQL 表的多个列:
SELECT CONCAT_WS(separator, column1, column2, ……. column_NameN) AS CONCAT_WS Function FROM Table_Name;
参数
- str − 它接受字符串(一个或多个字符串)以及分隔符。
返回值
SQL CONCAT_WS() 函数返回与运算符从与操作数以及分隔符相同的表达式返回的字符串相同。
示例
以下 SELECT 查询添加两个字符并创建一个新字符串:
SELECT CONCAT_WS('_','Tutorialspoint', 'Company') AS CONCAT_WSfunction;
输出
以下是上述查询的输出:
+------------------------+ | CONCAT_WSfunction | +------------------------+ | Tutorialspoint_Company | +------------------------+
示例
以下 SELECT 查询通过添加两个以上的字符返回一个新的带空格的字符串:
SELECT CONCAT_WS(' ', 'B', 'I', 'R', 'T', 'H', 'D', 'A', 'Y') AS HAPPY;
输出
上述 SQL 查询产生以下输出:
+-----------------+ | HAPPY | +-----------------+ | B I R T H D A Y | +-----------------+
示例
以下查询在两个字符串之间使用空格作为分隔符:
SELECT CONCAT_WS(' ', 'HELLO', 'WORLD') AS CONCAT_WSFunction;
输出
执行上述查询后,将产生以下输出:
+-------------------+ | CONCAT_WSFunction | +-------------------+ | HELLO WORLD | +-------------------+
示例
在这里,我们还可以提供数值作为分隔符:
SELECT CONCAT_WS('456', 'Good', 'morning', 'Everyone') AS CONCAT_WSFunction;
输出
执行上述查询后,将产生以下输出:
+---------------------------+ | CONCAT_WSFunction | +---------------------------+ | Good456morning456Everyone | +---------------------------+
示例
以下 SELECT 查询添加两个包含符号的字符串:
SELECT CONCAT_WS(' = ', '#$%jhg*', '@#$*&^gd%786') AS CONCAT_WSFunction;
输出
执行上述查询后,将产生以下输出:
+------------------------+ | CONCAT_WSFunction | +------------------------+ | #$%jhg* = @#$*&^gd%786 | +------------------------+
示例
在以下示例中,我们将 NULL 值作为分隔符传递。如果您这样做,正如您观察到的那样,结果将为 NULL:
SELECT CONCAT_WS(NULL, 'HELLO', 'WORLD') AS CONCAT_WSFunction;
输出
执行上述查询后,将产生以下输出:
+-------------------+ | CONCAT_WSFunction | +-------------------+ | NULL | +-------------------+
示例
现在,让我们尝试将 NULL 作为字符串值(分隔符之后)传递。如果您这样做,它将被忽略,并且不包含在结果中:
SELECT CONCAT_WS(' ', 'HELLO', NULL, 'WORLD') AS CONCAT_WSFunction;
输出
执行上述查询后,将产生以下输出:
+-------------------+ | CONCAT_WSFunction | +-------------------+ | HELLO WORLD | +-------------------+
示例
以下是一个示例,其中我们将空字符串作为参数传递给CONCAT() 函数:
SELECT CONCAT(' ');
输出
执行上述查询后,将产生以下输出:
+-------------+ | CONCAT(' ') | +-------------+ | | +-------------+
示例
如果我们将多个参数传递给CONCAT() 函数,并且任何一个参数为 null,则结果也将为 null:
SELECT CONCAT('ALL', 'IS', 'WELL', NULL) AS CONCAT_Function;
输出
执行上述查询后,将产生以下输出:
+-----------------+ | CONCAT_Function | +-----------------+ | NULL | +-----------------+
示例
您可以将表列作为参数传递给CONCAT_WS() 函数,以使用分隔符转换字符或字符串。假设我们使用CREATE语句创建了一个名为 Customers 的表,如下所示:
create table CUSTOMERS( ID INT NOT NULL, NAME VARCHAR(15) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(25), SALARY DECIMAL(10, 4), PRIMARY KEY(ID) );
现在让我们使用 INSERT 语句向客户表中插入七条记录,如下所示:
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(1, 'Ramesh', 32, 'Ahmedabad', 2000.00); insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(2, 'Khilan', 25, 'Delhi', 1500.00); insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(3, 'kaushik', 23, 'Kota', 2000.00); insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(4, 'Chaitali', 25, 'Mumbai', 6500.00); insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(5, 'Hardik', 27, 'Bhopal', 8500.00); insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(6, 'Komal', 22, 'MP', 4500.00); insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(7, 'Muffy', 24, 'Indore', 10000.00);
以下 SELECT 查询使用CONCAT_WS函数和CUSTOMERS表的ID、NAME列,分隔符为 '_':
SELECT ID, NAME, CONCAT_WS('__', ID, NAME) AS CONCAT_WSFunction from CUSTOMERS;
+----+----------+-------------------+ | ID | NAME | CONCAT_WSFunction | +----+----------+-------------------+ | 1 | Ramesh | 1__Ramesh | | 2 | Khilan | 2__Khilan | | 3 | kaushik | 3__kaushik | | 4 | Chaitali | 4__Chaitali | | 5 | Hardik | 5__Hardik | | 6 | Komal | 6__Komal | | 7 | Muffy | 7__Muffy | +----+----------+-------------------+
以下 SELECT 查询使用CONCAT_WS函数和CUSTOMERS表的所有列,分隔符为 ',',列包含 ID、NAME、AGE、ADDRESS 和 SALARY。
SELECT ID, NAME, AGE, ADDRESS, SALARY, CONCAT_WS(',', ID, NAME, AGE, ADDRESS, SALARY) AS CONCAT_WSFunction FROM CUSTOMERS;
输出
执行上述语句后,将产生以下输出:
+----+----------+-----+-----------+------------+---------------------------------+ | ID | NAME | AGE | ADDRESS | SALARY | CONCAT_WSFunction | +----+----------+-----+-----------+------------+---------------------------------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.0000 | 1,Ramesh,32,Ahmedabad,2000.0000 | | 2 | Khilan | 25 | Delhi | 1500.0000 | 2,Khilan,25,Delhi,1500.0000 | | 3 | kaushik | 23 | Kota | 2000.0000 | 3,kaushik,23,Kota,2000.0000 | | 4 | Chaitali | 25 | Mumbai | 6500.0000 | 4,Chaitali,25,Mumbai,6500.0000 | | 5 | Hardik | 27 | Bhopal | 8500.0000 | 5,Hardik,27,Bhopal,8500.0000 | | 6 | Komal | 22 | MP | 4500.0000 | 6,Komal,22,MP,4500.0000 | | 7 | Muffy | 24 | Indore | 10000.0000 | 7,Muffy,24,Indore,10000.0000 | +----+----------+-----+-----------+------------+---------------------------------+