MySQL将两列合并为一列


106

我正在尝试找到一种将两列合并为一个的方法,但始终在列中获取值“ 0”,而不是单词的组合。

这些是我和其他人尝试过的:

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

SELECT column1 + ' ' + column2 AS column3
FROM table;

有人可以让我知道我做错了吗?


1
您正在使用哪个数据库?两列的类型是什么?
Gordon Linoff 2014年



使用最佳答案的解决方案,但添加一个管道。选择concat(column1,'|',column2)。它有助于Excel更高
宇宙鹰

Answers:


167

我的猜测是,您使用的是MySQL,其中的+运算符会进行加法运算,并将值自动转换为数字。如果值不是以数字开头,则转换后的值为0

所以试试这个:

select concat(column1, column2)

两种添加空间的方法:

select concat(column1, ' ', column2)
select concat_ws(' ', column1, column2)

我正在使用sql server 2005,它给我的错误是Incorrect syntax near ')'.
hud 2015年

5
@coder。。。这个问题被标记为“ mysql”。如果您有关于SQL Server的问题,请作为问题而不是在评论中提出。
高登·利诺夫

同样适用于T-SQL,出色而简单的解决方案。将两列缩减为一列。
瑞安·巴蒂斯通19'Feb

23

试试这个,对我有用

select (column1 || ' '|| column2) from table;

1
看起来像Oracle。
coburne

这也适用于合并多个(超过2个)列。Thx
Kayathiri

SQL标准提供了CONCAT()函数,可将两个字符串连接为一个字符串。但是,SQLite不支持CONCAT()函数。而是使用串联运算符(||)将两个字符串合并为一个。
PaulH


5

当我在合并的列之间需要一个空格时,这是唯一对我有用的解决方案。

select concat(concat(column1,' '), column2)

3

对于那里的MySQL爱好者,我喜欢此IFNULL()功能。此处的其他答案建议ISNULL()在某些实现中该功能具有相似的功能。在我的情况下,我有一列描述为NOT NULL,一列序列号可能为。NULL这就是将它们组合为一列的方式:

SELECT CONCAT(description,IFNULL(' SN: ', serial_number),'')) FROM my_table;

我的结果表明,将字符串与NULL结果串联在一起的结果NULL。在这些情况下,我一直在获得替代价值。


3

如果您正在研究,Oracle则:

SELECT column1 || column2 AS column3
FROM table;

要么

如果您正在使用MySql,则:

SELECT Concat(column1 ,column2) AS column3
FROM table;

1

我用过这种方式,这是永远的最好。在此代码中还处理了null

SELECT Title,
FirstName,
lastName, 
ISNULL(Title,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'') as FullName 
FROM Customer

试试这个...



0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName                              

简单的组合方式
拉文
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.