Comment convertir un entier en chaîne de caractères et d'obtenir la longueur de la chaîne
Dans ma base de données il y a un champ last_id
de type integer
. La table contient plusieurs lignes. Disons que la valeur maximale de last_id
est 104050. Maintenant, je veux savoir la longueur de cet entier.
Que ce n'est pas possible, je suis en train de le convertir en une chaîne de caractères.
SELECT to_char(MAX(last_id),'99') FROM xxxx
Je m'attends à ce pour un rendement de 10 avec type = text, mais au lieu de cela, il renvoie ## type = text.
Ensuite, je voudrais utiliser SELECT char_length(to_char(MAX(last_id),'99')) FROM xxx
qui devrait revenir 2 ...
Ce qui ne va pas ici?
- La raison en est le "mode de remplissage" de la
to_char()
fonction. À l'aide deto_char(last_id, 'FM99')
serait probablement résoudre votre problème. - Pourquoi acceptez-vous de rjhdby de réponse? Le mien est plus court, mieux, plus précoce et correcte.
- vous avez raison, j'ai corrigé cela maintenant qu'il a aidé à résoudre mon problème en premier lieu
Vous devez vous connecter pour publier un commentaire.
Cast la
integer
de la valeur àtext
:Car vous avez affaire avec des entiers, vous pouvez effectivement trouver la longueur du numéro (ou le nombre de chiffres dans le nombre) directement. Mathématiquement, le nombre de chiffres dans un nombre entier est un de plus que le plancher de le logarithme de base 10 d'un nombre.
Vous pouvez utiliser les éléments suivants pour trouver la longueur directement:
Ne fonctionnent pas avec postgresql, mais après la documentation de lire... Somthign comme ça.
SÉLECTIONNEZ character_length(cast(last_id que varchar(20))) à partir de la table