You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CONCAT结合+运算符拼接SQL两列中的字符串?

SQL字符串拼接报错的解决方案

你用SELECT start_name + end_name报错的核心原因是:+运算符在多数数据库中是用于数值加法,而非字符串拼接,当操作数是字符串类型时,会触发类型不匹配错误;即使部分数据库(如SQL Server)允许用+拼接字符串,只要其中一列存在NULL值,结果就会变成NULL,也可能引发异常。

针对不同数据库,正确的字符串拼接方式如下:

1. MySQL/MariaDB

使用CONCAT()函数,支持多参数拼接;如果要自动忽略NULL(将NULL转为空字符串),可以用CONCAT_WS()(指定分隔符为空即可):

-- 基础拼接(含NULL时结果为NULL)
SELECT CONCAT(start_name, end_name) AS combined_name FROM your_table;

-- 处理NULL值,将NULL转为空字符串
SELECT CONCAT_WS('', start_name, end_name) AS combined_name FROM your_table;

2. SQL Server

可以用CONCAT()函数(自动处理NULL),或者用+配合ISNULL()手动处理NULL:

-- 自动处理NULL,推荐
SELECT CONCAT(start_name, end_name) AS combined_name FROM your_table;

-- 手动处理NULL,用+拼接
SELECT ISNULL(start_name, '') + ISNULL(end_name, '') AS combined_name FROM your_table;

3. PostgreSQL

直接用||运算符,或者CONCAT()函数:

-- 运算符方式
SELECT start_name || end_name AS combined_name FROM your_table;

-- 函数方式(自动处理NULL)
SELECT CONCAT(start_name, end_name) AS combined_name FROM your_table;

4. Oracle

使用||运算符(支持多列拼接),或者CONCAT()函数(仅支持两个参数,多列需嵌套):

-- 运算符方式,推荐
SELECT start_name || end_name AS combined_name FROM your_table;

-- 函数方式
SELECT CONCAT(start_name, end_name) AS combined_name FROM your_table;

内容的提问来源于stack exchange,提问作者Alka Manjaly Jaison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:40:58