Se si memorizzano i numeri di telefono in una colonna flottata (che è una cattiva idea), sono presumibilmente tutti interi e potrebbero essere convertiti in int prima di eseguire il cast su nvarchar.
Così, invece di:
select cast(cast(1234567890 as float) as nvarchar(50))
1.23457e+009
Si potrebbe utilizzare:
select cast(cast(cast(1234567890 as float) as int) as nvarchar(50))
1234567890
In questi esempi il più interno cast(1234567890 as float)
viene usato al posto di selezione di un valore dalla colonna appropriata.
Mi raccomando davvero che non si memorizzano i numeri di telefono in floats però!
Cosa succede se il numero di telefono inizia con uno zero?
select cast(0100884555 as float)
100884555
Whoops! Abbiamo appena memorizzato un numero di telefono errato ...
Anche se un numero di telefono è un tipo di 'numero', una regola generale è di memorizzare SOLO le cose come numeri se si prevede di fare qualche tipo di calcolo con loro. Se il numero che si intende archiviare non avrà mai bisogno di alcuna manipolazione (ad eccezione di un aggiornamento o qualcosa del genere), dovresti memorizzarli come una stringa di qualche tipo. – syllogism