2017-09-11 13 views
1

Ich habe zwei Spalten latitude und longitude. Ich hätte sie beim Import aus der Datei mit fester Breite auf numerisch setzen sollen, aber keine Zeit, diesen Prozess erneut durchzuführen. Ich verwende SQL Server Express und muss den Import-Assistenten verwenden. Es gibt 92 Spalten.Konvertieren von Varchar in numerische

Anyways, mit dem folgenden Code und erhalten einen Fehler (siehe unten), wenn ich versuche, es von varchar(9) zu numeric (11,6) zu ändern. Ich habe die Einstellungen so geändert, dass ich Änderungen an Namen und Datentypen vornehmen kann. Ich weiß, dass die Verwendung der Entwurfsfunktion im Objekt-Explorer einen ähnlichen Fehler ergibt. Irgendwelche anderen Wege um dieses Dilemma?

Code:

alter table dbo.tablename 
    alter column latitude numeric(11,6); 

Fehler:

Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to numeric.

einfach den folgenden Code gefunden:

alter table tablename 
alter column latitude float 

Warum hat diese Arbeit, aber nicht die vorherige?

+1

Tag RDBMS, die jeweils eine andere Syntax hat. Sind Sie sicher, dass alle Daten im Inneren numerisch sind? 'Wenn es SQL-Server ist, versuchen Sie Folgendes auszuführen: 'SELECT MIN (ISNUMERIC (Breite)) FROM YourTable. Hast du 1 oder 0? – sagi

+0

Es wurde ein Wert von 1 zurückgegeben. –

Antwort

1

Sie müssen einen Wert finden. Ich bin nicht sicher ist SQL Server Express unterstützt isnumeric(), so ist dies eine Möglichkeit:

select latitude 
from tablename 
where isnumeric(latitude) = 0; 

Andernfalls können Sie dies annähernd mit like:

where latitude not like '%[^0-9.]%' and 
     latitude not like '%.%.%' 
Verwandte Themen