MySQL 'Tronqué incorrecte la valeur entière"
Je reçois un étrange "Tronquée incorrecte la valeur entière" erreur quand je lance la requête mise à JOUR suivante:
update tbl
set projectNumber = right(comments, 7)
where createdBy = 'me'
and length(CONVERT(right(comments, 7), SIGNED INTEGER)) = 7
and CONVERT(right(comments, 7), SIGNED INTEGER) > 0
and CONVERT(right(comments, 7), SIGNED INTEGER) is not null
and createdOn > '2011-01-31 12:00:00'
and projectNumber is null
projectNumber est de type varchar(10).
Quand je le lance comme un droit, sélectionnez je n'obtiens pas d'erreur et de voir des résultats comme prévu. Des idées? Essentiellement, je suis en train de mettre à jour le projectNumber domaine où la fin des commentaires dans les notes 7 caractères numériques (mais projectNumber ne sont pas toujours 7 numérique, c'est pourquoi le champ est de type varchar(10)).
OriginalL'auteur Todd Sharp | 2011-02-09
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas une erreur. C'est un avertissement qui vient de CONVERTIR() lorsque vous demandez à convertir les non-numérique pour integer;
Exécuter ces requêtes dans la console pour voir:
Comme je l'ai dit, c'est un avertissement, pas une erreur. Votre requête doit être en train de faire la mise à jour correctement.
Je soupçonne que votre serveur est en cours d'exécution dans
TRADITIONAL
mode SQL, qui convertit tous les avertissements d'erreurs. dev.mysql.com/doc/refman/5.5/en/...La droite. J'ai en fait décidé d'utiliser une expression régulière (et la droite(commentaires, 7) REGEXP '^[0-9]+$') et d'oublier les convertir non-sens. A très bien fonctionné. Merci beaucoup pour votre aide.
OriginalL'auteur Mchl
Une autre cause fréquente de cet avertissement est un espace blanc dans la chaîne de caractères à convertir. Utilisation
trim()
avantconvert()
de se débarrasser de cela.OriginalL'auteur Ryan Shirley
Si vous utilisez un type de texte pour les données de la colonne et vous avez essayé de définir la valeur par défaut comme
0
alors juste commeNULL
:OriginalL'auteur John