Sto provando a modificare il tipo di dati in una colonna in una tabella da Float
(null) a Varchar(25)
(null). Il più grande float nei dati correnti è di 12 cifre, ma potrebbe essere necessario aggiungere più cifre in futuro, quindi varchar(25)
.Conversione SQL tipo di colonna da float a varchar
I dati correnti nella colonna sono numeri di telefono. La modifica deve essere fatta per consentire gli zeri precedenti.
Tuttavia, sto avendo qualche difficoltà a farlo.
ho provato la seguente:
ALTER TABLE Customer
ALTER COLUMN Phonenumber varchar(25)
Questo non mi dà il risultato desiderato.
Per esempio 1549779498
diventa 1.54978e+009
qualcosa, allora ho provato nelle linee di questo:
- Creazione di una nuova colonna (temporanea)
PhonenumberVarchar
- Conversione e copiando i dati da una colonna a un altro
- Eliminazione della colonna precedente
- Ridenominazione della nuova colonna con il vecchio nome
Codice:
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'
questo non funziona neanche:
subquery ha restituito più 1 valore. Ciò non è consentito quando la sottoquery segue =,! =, <, < =,>,> = o quando la sottoquery viene utilizzata come espressione.
E ora è tardi e la mia testa fa male ...
chiunque può aiutare?
NOTA:
Il tavolo è piuttosto grande, circa 1,5 milioni di righe, quindi le prestazioni può essere un problema.
Utilizzo di SQL Server.
Questo sembra funzionare. Quindi, se capisco correttamente il trucco con la conversione decimale prima è quello di assicurarsi che gli errori di arrotondamento che ho ottenuto utilizzando direttamente nvarchar siano eliminati? – user2110298
@ user2110298. . . Sì, anche se non sono sicuro che siano esattamente errori di arrotondamento. La rappresentazione utilizzata per la conversione non è ciò che desideri e questo è un modo relativamente semplice per risolvere questo problema. –