Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Errore durante la conversione del tipo di dati varchar

OK. Alla fine ho creato una vista che funziona:

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]%')

Grazie a AdaTheDev e CodeByMoonlight . Ho usato le tue due risposte per arrivare a questo. (Grazie anche agli altri che hanno risposto ovviamente)

Ora, quando mi unisco ad altri cols bigint o faccio qualcosa come 'SELECT * FROM MyView where mycol=1' restituisce il risultato corretto senza errori. La mia ipotesi è che il CAST nella query stessa faccia sì che Query Optimizer non guardi la tabella originale come ha detto Christian Hayter potrebbe andare avanti con le altre viste