MySQL将两列组合成一列

我试图find一种方法将两个列合并为一个,但不断地在列中获取值“0”而不是字的组合。

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

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

有人能让我知道我在做什么错吗?

我的猜测是,你正在使用MySQL的+运算符做加法,同时将值静默转换为数字。 如果一个值不是以一个数字开始,那么转换后的值是0

所以试试这个:

 select concat(column1, column2) 

两种添加空间的方法:

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

这对我有用

 SELECT CONCAT(column1, ' ' ,column2) AS newColumn; 

试试这个,对我有用

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

这是唯一能解决这个问题的解决scheme,当我在被合并的列之间需要一个空格时。

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

对于那些MySQL粉丝,我喜欢IFNULL()函数。 在这里的其他答案build议在一些实现中与ISNULL()函数类似的function。 在我的情况下,我有一个NOT NULL的描述列,并且可能是NULL的序列号列这是我如何将它们组合成一列:

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

我的结果表明,用NULL连接string的结果会导致NULL 。 在这些情况下,我已经获得了另一种价值。

如果您正在Oracle上工作然后:

 SELECT column1 || column2 AS column3 FROM table; 

要么

如果您正在使用MySql那么:

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

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

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

尝试这个…

 convert(varchar, column_name1) + (varchar, column_name) 

SELECT从FullName TableNameselectCollumn1 +' – '+ Collumn2

– 例如:列数组… – 当与数字合并列,你将不得不将这些列从#数据types转换为string – 其他SQL将这些数字一起添加在相同的列/结果。

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