MySQL将两列组合成一列

时间:2014-03-30 03:17:22

标签: mysql sql

我试图找到一种方法将两列合二为一,但不断获得价值' 0'在列中而不是单词的组合。

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

SELECT column1 + column2 AS column3
FROM table;

SELECT column1 || column2 AS column3
FROM table;

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

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

11 个答案:

答案 0 :(得分:141)

我的猜测是你使用的是+运算符添加的MySQL,以及将值静默转换为数字。如果值不以数字开头,则转换后的值为0

所以试试这个:

select concat(column1, column2)

添加空间的两种方法:

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

答案 1 :(得分:17)

试试这个,它对我有用

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

答案 2 :(得分:11)

它为我工作

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

答案 3 :(得分:4)

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

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

答案 4 :(得分:3)

对于MySQL粉丝,我喜欢IFNULL()功能。这里的其他答案表明在某些实现中具有ISNULL()函数的类似功能。在我的情况下,我有一列描述NOT NULL,以及一列序列号,可能是NULL这就是我将它们组合成一列的方式:

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

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

答案 5 :(得分:3)

如果您正在工作Oracle那么:

SELECT column1 || column2 AS column3
FROM table;

OR

如果您正在使用MySql那么:

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

答案 6 :(得分:1)

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

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

试试这个......

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

答案 9 :(得分:0)

表:

---------------------
| column1 | column2 |
---------------------
|   abc   |   xyz   |
---------------------

Oracle中:

SELECT column1 || column2 AS column3
FROM table_name;

输出:

表:

---------------------
| column3           |
---------------------
| abcxyz            |
---------------------

如果要将',''.'或任何字符串放在两列数据中,则可以使用:

SELECT column1 || '.' || column2 AS column3
FROM table_name;

输出:

表:

---------------------
| column3           |
---------------------
| abc.xyz           |
---------------------

答案 10 :(得分:0)

SELECT   CONVERT (nvarchar (10), Month(NextDate))+'-'+CONVERT (nvarchar (10), Year(NextDate)) as MonthOfYear, COUNT(CaseNo) as CountDisposal
FROM dbo.Main_Cause_List 
WHERE (DisposalState = 'Dispossed-off') 
GROUP BY Month(NextDate),Year(NextDate);