我想了解有关转化的问题: 我正在处理的考试转储,在您批准或不同意的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'
答案说这不起作用
答案 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)
我创建了一个表格并尝试动手。在将整数值转换为带引号或将其更改为带引号的字符串后,它可以正常工作。