Ich versuche, den Datentyp in einer Spalte in einer Tabelle von Float
(null) zu Varchar(25)
(null) zu ändern. Der größte Float in den aktuellen Daten ist 12 Ziffern, aber möglicherweise müssen in Zukunft weitere Ziffern hinzugefügt werden, daher varchar(25)
.SQL Converting Spaltentyp von float zu varchar
Die aktuellen Daten in der Spalte sind Telefonnummern. Die Änderung muss vorgenommen werden, um vorausgehende Nullen zu ermöglichen.
Allerdings habe ich einige Schwierigkeiten dabei.
Ich habe versucht, die folgenden:
ALTER TABLE Customer
ALTER COLUMN Phonenumber varchar(25)
Dies gibt mir nicht das gewünschte Ergebnis.
Zum Beispiel 1549779498
wird 1.54978e+009
Dann habe ich versucht, etwas in den Zeilen dieses:
- eine neue (temporäre) Spalte Erstellen
PhonenumberVarchar
- Konvertieren und Kopieren der Daten aus einer Spalte zu einem anderen
- Löschen der alten Spalte
- Umbenennung der neuen Spalte in den alten Namen
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'
Das funktioniert auch nicht:
Unterabfrage gab mehr als 1 Wert. Dies ist nicht zulässig, wenn die Unterabfrage folgt =,! =, <, < =,>,> = oder wenn die Unterabfrage als Ausdruck verwendet wird.
Und jetzt ist es zu spät und mein Kopf tut weh ...
Kann jemand helfen?
HINWEIS:
Der Tisch ist ziemlich groß, etwa 1,5 Millionen Zeilen, so kann die Leistung ein Problem sein.
Verwenden von SQL Server.
Dies scheint zu funktionieren. Also, wenn ich richtig verstehe, ist der Trick mit der Dezimalumwandlung zuerst, um sicherzustellen, dass die Rundungsfehler, die ich direkt mit nvarchar bekommen habe, eliminiert werden? – user2110298
@ user2110298. . . Ja, obwohl ich mir nicht sicher bin, ob es sich um Rundungsfehler handelt. Die für die Konvertierung verwendete Darstellung ist nicht das, was Sie möchten, und dies ist ein relativ einfacher Weg, um dieses Problem zu lösen. –