即使在SQL中遵循Microsoft格式后也会出现错误

时间:2018-11-02 12:19:33

标签: sql string tsql

如何输出不带标题的字符串?我的代码看起来还不错,但是错误消息显示:“转换varchar值时转换失败,并且转换为数据类型int。”

而且我甚至都没有试图将字符串更改为'int',那为什么要这样解释呢?

SELECT FirstName + ' has a EmployeeID of '+ EmployeeID + ' and was born '+ 
CONVERT(NVARCHAR(30), BirthDate, 112)
FROM Db.Employees;

Microsoft页面中显示的类似代码有效:-

SELECT 'The order is due on ' + CONVERT(varchar(12), DueDate, 101) 
FROM Sales.SalesOrderHeader  
WHERE SalesOrderID = 50001;

1 个答案:

答案 0 :(得分:2)

您必须将EmployeeID(即int)转换为varchar。尝试像这样更改代码:

SELECT FirstName + ' has a EmployeeID of '+ CONVERT(NVARCHAR(20), EmployeeID) + ' and was born '+ CONVERT(NVARCHAR(30), BirthDate, 112)
FROM Db.Employees;

如果在SQL Server中查看Data type precedence,您会发现int数据类型(#16)在字符串类型(#25-#28)上方,因此SQL Server将尝试转换文本(员工的名称等)为整数。

另一种选择是使用CONCAT函数来连接您的值。