这个70-761考试转储问题背后的原因是什么

时间:2019-01-17 17:11:22

标签: tsql

我想了解有关转化的问题: 我正在处理的考试转储,在您批准或不同意的3种不同解决方案中,至少有3次出现此问题,请注意,RegistrationNumber定义为varchar(5):

您运行以下查询:

SELECT UserId FROM tblVehicleRegistration
WHERE RegistrationNumber = 20012
AND RegistrationDate > '2016-01-01'

查询输出窗口显示以下错误消息:“将varchar值“ AB012”转换为数据类型int时转换失败。” 您需要解决该错误。

解决方案:您可以如下修改Transact-SQL语句:

SELECT UserId FROM tblVehicleRegistration
WHERE RegistrationNumber = '20012'
AND RegistrationDate > '2016-01-01'

答案说这不起作用

3 个答案:

答案 0 :(得分:1)

我认为测试不正确。这是一个简化的示例:

declare @tblVehicleRegistration table (RegistrationNumber varchar(5))
insert into @tblVehicleRegistration(RegistrationNumber) VALUES('AB012')
SELECT * FROM @tblVehicleRegistration WHERE RegistrationNumber = 20012 --Fails as expected
SELECT * FROM @tblVehicleRegistration WHERE RegistrationNumber = '20012' --works as expected

答案 1 :(得分:0)

SQL Server将进行转换以便比较'AB012'20012。如果您检查此链接Data type precedence,将会看到类型varchar(至低优先级),需要转换为int(至高优先级)才能进行比较。< / p>

答案 2 :(得分:0)

我创建了一个表格并尝试动手。在将整数值转换为带引号或将其更改为带引号的字符串后,它可以正常工作。