Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro ao converter o tipo de dados varchar


OK. Finalmente criei uma view que funciona:
SELECT TOP (100) PERCENT id, CAST(CASE WHEN IsNumeric(MyCol) = 1 THEN MyCol ELSE NULL END AS bigint) AS MyCol
FROM         dbo.MyTable
WHERE     (MyCol NOT LIKE '%[^0-9]%')

Obrigado a AdaTheDev e CodeByMoonlight . Eu usei suas duas respostas para chegar a isso. (Obrigado aos outros respondentes também, é claro)

Agora, quando eu faço joins com outras colunas bigint ou faço algo como 'SELECT * FROM MyView where mycol=1' ele retorna o resultado correto sem erros. Meu palpite é que o CAST na própria consulta faz com que o otimizador de consulta não olhe para a tabela original, como Christian Hayter disse que pode estar acontecendo com as outras visualizações