如何使用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
相关产品推荐
相关产品推荐

