Я столкнулся с очень странной проблемой. Есть два sql запроса:
1:
SELECT *
FROM tbl_1
WHERE ID IN (SELECT TargetID
FROM tbl_2
WHERE PeopleID = 'AAA')
AND ID = 49
2:
SELECT *
FROM tbl_1
WHERE ID IN (SELECT TargetID
FROM tbl_2
WHERE PeopleID = 'BBB')
AND ID = 49
Мы можем обнаружить, что эти два запроса идентичны, за исключением PeopleID . Но их результат был очень разным. Для Q1 мы получили " Ошибка преобразования типа данных varchar в числовой "; И для Q2, это бежало хорошо. Я был смущен!
Есть некоторая информация, которая может быть полезна.
tbl_1 ID numeric(18,0) not null
tbl_2 TargetID varchar(50) not null
и каждый TargetID в Q1 или Q2 может пройти тест IsNumeric
(а именно, IsNumeric(TargetID) = 1
)
другая информация: если мы прокомментируем строку AND ID = 49
и каждый запрос будет работать хорошо
спасибо за помощь