Ответ 1
Это ответ
(CASE
WHEN
(isnumeric(ts.TimeInSeconds) = 1)
THEN
CAST(ts.TimeInSeconds AS bigint)
ELSE
0
END) AS seconds
У меня есть поле VARCHAR(6)
Я пытаюсь вставить его в другую таблицу типа bigint
это дает мне ошибку
(Ошибка Преобразование из типа данных varchar в bigint
вот что я делаю
CONVERT(bigint, seconds) as seconds
Может ли кто-нибудь помочь в решении этой проблемы?
Это ответ
(CASE
WHEN
(isnumeric(ts.TimeInSeconds) = 1)
THEN
CAST(ts.TimeInSeconds AS bigint)
ELSE
0
END) AS seconds
альтернативой было бы сделать что-то вроде:
SELECT
CAST(P0.seconds as bigint) as seconds
FROM
(
SELECT
seconds
FROM
TableName
WHERE
ISNUMERIC(seconds) = 1
) P0
Я думаю, что ваш код прав. Если вы запустите следующий код, он преобразует строку "60", которая обрабатывается как varchar, и возвращает целое число 60, если целое число содержит строку во втором, это работает.
select CONVERT(bigint,'60') as seconds
и он возвращает
60