2017-09-11 52 views
1

J'ai deux colonnes latitude et longitude. J'aurais dû les mettre à numérique lors de l'importation à partir du fichier de largeur fixe, mais je n'ai pas le temps de refaire ce processus. J'utilise SQL Server Express et je dois utiliser l'assistant d'importation. Il y a 92 colonnes.Conversion de varchar en numérique

Quoi qu'il en soit, en utilisant le code suivant et en obtenant une erreur (montrée ci-dessous) quand j'essaye de le changer de varchar(9) à numeric (11,6). J'ai modifié les paramètres à l'endroit où je peux apporter des modifications aux noms et aux types de données. Je sais que l'utilisation de la fonction de conception dans l'explorateur d'objets produira une erreur similaire. D'autres façons de contourner ce dilemme?

code:

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

Erreur:

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

Je viens de trouver le code suivant:

alter table tablename 
alter column latitude float 

Pourquoi ce travail, mais pas le précédent?

+1

Tag SGBDR, chacun a une syntaxe différente. Êtes-vous sûr que toutes les données à l'intérieur sont numériques? 'si c'est SQL-Server, essayez d'exécuter: 'SELECT MIN (ISNUMERIC (latitude)) FROM YourTable'. Avez-vous 1 ou 0? – sagi

+0

Il a renvoyé une valeur de 1. –

Répondre

1

Vous devez trouver une valeur. Je ne suis pas sûr est SQL Server Express prend en charge isnumeric(), donc c'est une possibilité:

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

Sinon, vous pouvez rapprocher cela avec like:

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