我正在尝试将两列合并为一列,但合并后的列中只得到了值“0”,而不是单词的组合。
以下是我尝试过的方法和其他人尝试过的方法:
SELECT column1 + column2 AS column3
FROM table;
SELECT column1 || column2 AS column3
FROM table;
SELECT column1 + ' ' + column2 AS column3
FROM table;
能否有人告诉我我做错了什么?
我正在尝试将两列合并为一列,但合并后的列中只得到了值“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)
SQL Server 2005
,但是它给我返回了错误信息:Incorrect syntax near ')'
。 - Nad试试这个,对我有效
select (column1 || ' '|| column2) from table;
对我很有效
SELECT CONCAT(column1, ' ' ,column2) AS newColumn;
当我需要合并的列之间有空格时,这是唯一有效的解决方法。
select concat(concat(column1,' '), column2)
Oracle
,那么:SELECT column1 || column2 AS column3
FROM table;
或者
如果您正在使用MySQL:
SELECT Concat(column1 ,column2) AS column3
FROM table;
对于MySQL的粉丝们,我喜欢使用IFNULL()
函数。其他答案中可能会建议使用ISNULL()
函数来实现类似的功能。在我的情况下,我有一个一定不为空的描述列以及一个可能为NULL
的序列号列。以下是我如何将它们合并为一个列:
SELECT CONCAT(description,IFNULL(' SN: ', serial_number),'')) FROM my_table;
我的研究结果表明,将字符串与 NULL
连接的结果是 NULL
。在这种情况下,我一直在获取替代值。
我已经使用了这种方式,它是永远最好的。在这段代码中,null值也已经被处理。
SELECT Title,
FirstName,
lastName,
ISNULL(Title,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'') as FullName
FROM Customer
表格:
---------------------
| 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 |
---------------------
SELECT Column1 + ' - ' + Column2 AS 'FullName' FROM TableName
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);