Attualmente ho una tabella con una colonna come varchar
. Questa colonna può contenere numeri o testo. Durante determinate query mi trattano come una colonna bigint
(faccio un join tra essa e una colonna in un'altra tabella che è bigint
)Errore durante la conversione del tipo di dati varchar
Finché c'erano solo i numeri in questo campo non ha avuto problemi, ma al minuto anche una riga aveva il testo e non i numeri in questo campo ho ottenuto un "Errore nella conversione del tipo di dati varchar
in bigint
." errore anche se nella parte WHERE mi sono accertato che nessuno dei campi di testo si presentasse.
per risolvere questo ho creato una vista come segue:
SELECT TOP (100) PERCENT ID, CAST(MyCol AS bigint) AS MyCol
FROM MyTable
WHERE (isnumeric(MyCol) = 1)
Ma anche se la vista mostra solo le righe con valori numerici e getta Mycol a bigint ho ancora un Errore che converte il tipo di dati varchar a bigint quando si esegue la seguente query:
SELECT * FROM MyView where mycol=1
quando si fa query la vista non dovrebbe sapere cosa sta succedendo dietro di essa! dovrebbe semplicemente vedere due campi bigint! (see attached image, anche lo studio di gestione mssql mostra i campi vista come bigint)
Personalmente penso che tu stia risolvendo il problema sbagliato. Qualcosa non va nella progettazione dello schema/database se si utilizza una colonna per due scopi diversi. –
Sì, lo so, ma l'intero sistema è troppo lungo per apportare importanti cambiamenti ora – adinas