Comment convertir Varchar en Int dans un serveur SQL 2008.
j'ai le code suivant lorsque j'ai essayé de l'exécuter ne m'a pas permis de convertir Varchar en Int.
Select Cast([Column1] as INT)
Column1 est de type Varchar (21) PAS de type NULL et je voulais le convertir en Int . En fait, j'essaie d'insérer Column1 dans une autre table ayant Field en tant que INT . S'il vous plaît, aidez-moi à convertir ceci?
Les espaces ne poseront pas de problème pour cast
, mais des caractères comme TAB
, CR
ou LF
apparaîtront sous la forme d'espaces, ne seront pas réduits par LTRIM
ou RTRIM
et constitueront un problème.
Par exemple, essayez ce qui suit:
declare @v1 varchar(21) = '66',
@v2 varchar(21) = ' 66 ',
@v3 varchar(21) = '66' + char(13) + char(10),
@v4 varchar(21) = char(9) + '66'
select cast(@v1 as int) -- ok
select cast(@v2 as int) -- ok
select cast(@v3 as int) -- error
select cast(@v4 as int) -- error
Vérifiez votre saisie pour ces caractères et, si vous les trouvez, utilisez REPLACE
pour nettoyer vos données.
Selon votre commentaire, vous pouvez utiliser REPLACE
dans le cadre de votre cast
:
select cast(replace(replace(@v3, char(13), ''), char(10), '') as int)
Si cela se produit souvent, il serait préférable de nettoyer les données et de modifier le mode de remplissage de la table afin de supprimer les variables CR
et LF
avant leur saisie.
vous pouvez utiliser la fonction de conversion:
Select convert(int,[Column1])
C'est comme cela que vous le feriez, est-ce que cela génère une erreur? Êtes-vous sûr que la valeur que vous essayez de convertir est convertible? Pour des raisons évidentes, vous ne pouvez pas convertir abc123
en int.
METTRE À JOUR
Sur la base de vos commentaires, je supprimerais tous les espaces contenus dans les valeurs que vous essayez de convertir.
C’est la bonne façon de le convertir en INT tant que vous n’avez pas de caractère alpha ou de valeur NULL.
Si vous avez des valeurs NULL, utilisez
ISNULL(column1, 0)
Il existe deux types de méthode de conversion en SQL.
CAST et CONVERT ont des fonctionnalités similaires. CONVERT est spécifique à SQL Server et permet une plus grande flexibilité lors de la conversion entre les valeurs de date et d'heure, les nombres fractionnaires et les signifiants monétaires. CAST est le plus standard ANSI des deux fonctions.
Utiliser Convert
Select convert(int,[Column1])
Utilisation de la fonte
Select cast([Column1] as int)
Essayez avec la commande ci-dessous, et il demandera toutes les valeurs à INT
sélectionnez la casse lorsque isnumeric (YourColumn + '.0e0') = 1 puis lancez (YourColumn as int) sinon NULL fin/* cas */ de votre table
Essayez le code suivant. Dans la plupart des cas, cela est dû à la question des virgules.
cast(replace([FIELD NAME],',','') as float)