我遇到了一个非常奇怪的问题。有两个SQL查询:SQL:将数据类型varchar转换为数字时出错
Q1:
SELECT *
FROM tbl_1
WHERE ID IN (SELECT TargetID
FROM tbl_2
WHERE PeopleID = 'AAA')
AND ID = 49
Q2:
SELECT *
FROM tbl_1
WHERE ID IN (SELECT TargetID
FROM tbl_2
WHERE PeopleID = 'BBB')
AND ID = 49
,我们可以发现这两个查询是指除的peopleid相同。但他们的结果非常不同。对于Q1,我们得到了“将数据类型varchar转换为数字错误”;第二季度,它运行良好。我很困惑!
有一些可能有用的信息。
tbl_1 ID numeric(18,0) not null
tbl_2 TargetID varchar(50) not null
每在Q1或Q2目标ID可以通过IsNumeric
测试(即IsNumeric(TargetID) = 1
)
另一个信息:如果我们注释行AND ID = 49
和每一个查询运行良好
THX为你的帮助
为什么你在varchar(50)数据类型中有数字? –
此表由其他人创建,而非我。出于某种原因,我必须使用它。 :) – Vincent