SQL de la Conversion de la Colonne type de données float varchar

J'essaye de modifier le type de données dans une colonne dans une table à partir de Float (null) pour Varchar(25) (null). Le plus grand flotter dans le courant de données est de 12 chiffres, mais les chiffres peuvent être ajoutés dans le futur, d'où varchar(25).

Les données actuelles dans la colonne des numéros de téléphone. Le changement doit être fait pour permettre précédent zéros.

Cependant, je vais avoir quelques difficultés à faire.

J'ai essayé ce qui suit:

ALTER TABLE Customer 
ALTER COLUMN Phonenumber varchar(25)

Cela ne me donne pas le résultat souhaité.

Par exemple 1549779498 devient 1.54978e+009

Puis j'ai essayé quelque chose dans les lignes de ce:

  • La création d'une nouvelle (temporaire) de la colonne PhonenumberVarchar
  • De convertir et de copier les données d'une colonne à l'autre
  • La suppression de l'ancienne colonne
  • De renommer la nouvelle colonne à l'ancien nom

Code:

ALTER TABLE Customer 
ADD PhonenumberVarchar varchar(25)

UPDATE Customer 
SET PhonenumberVarchar = STR(Phonenumber, 12, 0)

ALTER TABLE Customer 
DROP COLUMN Phonenumber

EXEC sp_rename 'Customer.PhonenumberVarchar', 'Phonenumber', 'COLUMN'

Cela ne fonctionne pas non plus:

Sous-requête a renvoyé plus de valeur 1. Ce n'est pas permis lorsque la sous-requête suit =, !=, <, <= , >, >= ou lorsque la sous-requête est utilisée comme une expression.

Et maintenant il est tard et ma tête me fait mal...

Peut aider quelqu'un?

REMARQUE:

La table est assez grande, environ 1,5 million de lignes, de sorte que la performance peut être un problème.

À l'aide de SQL Server.

OriginalL'auteur user2110298 | 2015-08-12