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