Я пытаюсь получить все значения, которые существуют в одной таблице, а не в другом. Условие присоединиться к ним - varchar в одной таблице, а bigInt - в другом (swmItems - bigInt, OBJ_TAB - varchar). Я пробовал следующее:Преобразование varchar в bigInt, включая нулевые значения
SELECT si.upc as upc from swmItems si
left outer join dbo.OBJ_TAB obj on cast(obj.F01 as BIGINT) = si.upc
WHERE obj.F01 IS NULL
однако это дает мне ошибку: «Ошибка преобразования типа данных varchar в bigint».
Я также попробовал следующее:
SELECT * FROM OBJ_TAB WHERE ISNUMERIC(f01) != 1
И вернуть ничего, так что все мои ценности должны быть номера в OBJ_TAB
Я думаю, что это из-за значения существуют в первой таблице, а не второй (пытается преобразовать null в bigInt). Есть ли способ присоединиться к двум таблицам таким образом?
Я использую Microsoft SQL 2012
Сноска: В OBJ_TAB существует число нулей перед числами вот почему сравнивая все как VARCHAR не работает для меня.
И что тип данных 'upc'? –
upc: bigInt, F01: varchar – kousha
'ISNUMERIC' отвечает на вопрос, который никто никогда не хотел спрашивать - если вы хотите найти строки, которые нельзя преобразовать в' bigint', вам, вероятно, просто нужны строки, содержащие что-либо кроме цифр. Попробуйте 'SELECT * FROM OBJ_TAB WHERE f01 LIKE '% [^ 0-9]%'', чтобы найти строки проблем. –