Convertir le type de données BIGINT UNSIGNED INT
Je sais que c'est peu orthodoxe et potentiellement dangereux de vouloir les convertir en quelque chose d'une plus grande à une plus petite taille de type de données. Toutefois, dans ce cas, il est extrêmement peu probable que la valeur de la BIGINT UNSIGNED
colonne est jamais plus grande que la taille maximale d'un INT
colonne.
Ainsi, l'utilisation de MySQL, je suis en train de lire la structure de la table. Lors de la lecture de la information_schema.columns.ordinal_position
colonne, j'ai réalisé qu'il est de type BIGINT UNSIGNED
. Maintenant, je veux cela comme une INT
la place pour mes fins de traitement. Je veux cast/convertir le type SQL.
CAST
et CONVERT
seulement me permettre de changer le signe du type de données, apparemment.
SELECT CAST(ordinal_position AS SIGNED)
FROM information_schema.columns
Je veux la colonne spécifiquement retourné comme un INT
. E. g. hacher la colonne à la valeur maximale d'un INT
et de renvoyer cette valeur.
Pour l'instant je vais juste changer le type de données après que j'ai tirer la valeur de retour. Mais j'aimerais savoir comment le faire en SQL.
OriginalL'auteur Josh M. | 2012-07-21
Vous devez vous connecter pour publier un commentaire.
cet article semble avoir une solution:
(je suppose que vous pouvez ajouter "UNSIGNED" à la signature - si non, vous pouvez toujours combiner avec la fonte que vous avez déjà supprime la unsigned partie).
OriginalL'auteur andrew cooke
Je n'ai malheureusement pas le droit de créer des fonctions sur la bd où je travaillais, donc après avoir essayé quelques choses, cela a fonctionné:
M'a sauvé d'avoir à réécrire 15 clés étrangères.
OriginalL'auteur crdb
Si vous essayez de créer la fonction de cette façon, vous obtiendrez ce message d'erreur:
Voir ce lien pour plus de détails sur la façon de le résoudre:
http://dev.mysql.com/doc/refman/5.0/en/stored-programs-logging.html
DETERMINISTIC
.OriginalL'auteur Dan Spiegel