Opérande type de données nchar est pas valide pour avg opérateur
J'ai une table qui enregistre la taille du fichier dans la base de données lorsque l'utilisateur télécharge. Je veux obtenir la valeur moyenne de l'ensemble de la taille que l'utilisateur a téléchargé.
J'ai la colonne suivante comme exemple qui montre la taille en Mo de
|Size|
|1.20|
|0.25|
|0.50|
Le résultat que je veux que la moyenne est quelque chose comme cela
|Size|
|0.65|
Lorsque j'essaie d'obtenir la moyenne, j'obtiens cette erreur
Msg 8117, Niveau 16, État 1, Ligne 15 Opérande type de données nchar est
non valide pour avg opérateur.
MODIFIER
J'ai changé le type de colonne à nvchar et obtenez ce message d'erreur quand je suis à la convertir en int
Conversion a échoué lors de la conversion de la valeur nvarchar '0,24" pour les données
de type int.
Quand je l'ai essayé avec une décimale j'obtiens ce message d'erreur
Msg 8114, Niveau 16, État 5, Ligne 11
Erreur lors de la conversion de type de données nvarchar numérique.
Que puis-je faire pour résoudre ce problème.
- Changement de type de colonne? Pourquoi est-il
nchar
? - En fait, j'ai essayé avec différents type de colonne et encore j'obtiens une erreur comme ci-dessus
- Bon Endroit!
Vous devez vous connecter pour publier un commentaire.
0.24
de ne pas convertir un int comme il a partie décimale.Que vous devez faire
CAST([size] as DECIMAL(9,2))
ou quelque chose du genre...Bien que nous pourrions faire avec voyant ton code 🙂
Pour utiliser cette
CAST
en tant que partie d'un ensemble...Bien sûr, je ne sais pas ce que votre table ou de la requête est réellement...
Comme d'autres l'ont dit - si vous allez être en prenant la moyenne de toute façon, alors il sera préférable de pas convertir le nombre à une
NVARCHAR
ouVARCHAR
, en premier lieu, et de travailler avec la plaine, les champs numériques.Comme gbn notes c'est
0,24
continental format...L'erreur montre que vous avez
0,24
comme un certain nombre de Suisses ou allemands, format.C'est différent de
0.24
dans Britanniques ou AMÉRICAINS format.Donc, si le type de données est correct qu'en décimal ou float,
0,24
ne serait pas autorisé parce que SQL Server n'a pas vraiment affaire avec continental nombre de formats. Voir SQL server avec les paramètres régionaux allemands pour plus d'Puis, ce n'est pas entier, soit de cours, de sorte que l'int conversion échoue.
Donc, fixer la colonne de type de données et les données de correction de l'erreur. Et vous pouvez également éviter les mauvaises numéro de client à la conversion en chaîne comme
24E-2
qui n'est reconnu qu'en tant que float.Et si vous avez des séparateurs de milliers de trop avec un mélange de format? Imaginez ce jeu de données
Fixant les données nécessitera certains, COMME les recherches. Au moins ces de fixer chaque format un par un.