2014-03-30 195 views
49

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

这些是我已经试过以及其他:

SELECT column1 + column2 AS column3 
FROM table; 

SELECT column1 || column2 AS column3 
FROM table; 

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

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

+1

您使用的数据库是?这两列的类型是什么? –

+0

mySQL web客户端 – aab

+0

[将两个数据库列连接到一个结果集列]可能的重复(http://stackoverflow.com/questions/6427764/concatenate-two-database-columns-into-one-resultset-column) –

回答

78

我的猜测是,您正在使用MySQL,其中+运算符会添加,并将值无声转换为数字。如果值不以数字开头,则转换后的值为0

那么试试这个:

select concat(column1, column2) 

两种方式来添加一个空格:

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

我正在使用'sql server 2005',它给了我错误,因为'附近的语法错误')'。' – BNN

+2

@coder。 。 。这个问题被标记为“mysql”。如果您有关于SQL Server的问题,请将其作为问题提出,而不是发表评论。 –

+0

同样的方法也适用于Hive。 – panther

4

这是一个将工作对我来说,当我需要的列之间的空间是唯一的解决办法合并。

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

试试这个,它为我工作

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

这看起来像Oracle。 – coburne

+0

这也适用于组合多个(多于2个)列。 Thx – Kayathiri

1

我已经使用这个方法及其最佳永远。在这段代码也无效处理

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

尝试......

3

对于MySQL的球迷在那里,我喜欢IFNULL()功能。这里的其他答案在一些实现中提出了与ISNULL()函数类似的功能。在我的情况,我的描述是NOT NULL的一列,这可能是NULL序列号的列这是我如何将它们结合在一起成一列:

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

我的研究结果表明,级连的结果字符串NULL的结果为NULL。在这些情况下,我一直在获得替代价值。

10

这是为我工作

SELECT CONCAT(column1, ' ' ,column2) AS newColumn; 
0
convert(varchar, column_name1) + (varchar, column_name) 
0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName        
+0

简单的组合方式 – Ravin

3

如果您正在使用Oracle然后:

SELECT column1 || column2 AS column3 
FROM table; 

OR

如果您正在使用的MySQL然后:

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

- 用于实例:组数字的列.... - 当用数字合并列,你必须投从#DATA类型的列字符串 --otherwise SQL会添加这些在相同的列/结果中一起编号。

select cast(shipperid as varchar)+'| '+ cast(empid as varchar) from sales.Orders