PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment formater des nombres dans PostgreSQL

Lorsque vous travaillez avec Postgres, vous pouvez utiliser le to_char() fonction pour afficher des nombres dans un format donné.

La façon dont cela fonctionne est que vous fournissez deux arguments. Le premier argument est le nombre à formater. Le deuxième argument détermine comment il est formaté.

La valeur de retour est texte .

Selon vos besoins, vous préférerez peut-être convertir le nombre dans le type de données approprié, par exemple en utilisant le cast() fonction.

Des exemples des deux méthodes sont présentés ci-dessous.

Exemple

Voici un exemple de base pour illustrer.

SELECT to_char(10, '99.99'); 

Résultat :

10.00

Le 9 s ont en fait une signification particulière dans ce contexte. Ce caractère est l'un des modèles de modèle valides que votre chaîne de format peut comprendre lors du formatage des nombres.

Dans le cas de 9 , il spécifie une position de chiffre, mais s'il s'agit d'un zéro de tête, il sera remplacé par un espace, tandis que s'il s'agit d'un zéro de fin et que le mode de remplissage est spécifié, il sera supprimé.

Si je supprime la décimale et les fractions de seconde, j'obtiens un résultat différent.

SELECT to_char(10, '99'); 

Résultat :

10

Supprimer les zéros non significatifs

Vous pouvez remplacer 9 avec 0 si vous souhaitez supprimer les zéros de début et de fin, même lorsqu'ils sont insignifiants.

Voici un exemple qui montre la différence entre les deux.

SELECT 
  to_char(0010, '9999') AS "9999",
  to_char(0010, '0000') AS "0000"; 

Résultat :

 9999 | 0000 -------+------- 10 | 0010

Modèles de modèles

Comme vu dans les exemples précédents, la chaîne de format consiste en un ou plusieurs modèles de modèle.

Par exemple, 9999 est une chaîne de format qui se compose de quatre modèles de modèle - dont chacun est 9 .

La décimale est un autre modèle de modèle.

J'aurais pu utiliser un D au lieu de la décimale. Cela utilise les paramètres régionaux actuels pour le formatage réel.

SELECT 
  to_char(10, '99.99') AS "99.99",
  to_char(10, '99D99') AS "99D99"; 

Résultat :

99,99 | 99D99 --------+-------- 10,00 | 10.00

Pour une liste complète des modèles de modèles et des modificateurs, consultez Modèles de modèles et modificateurs pour le formatage numérique dans Postgres.

Modificateurs de modèle de modèle

Il existe également quelques modificateurs qui peuvent être utilisés avec le modèle de modèle. Ceux-ci changent la façon dont la sortie est formatée, selon le modificateur utilisé.

Plus précisément, trois modificateurs peuvent être utilisés avec le formatage numérique.

Modificateur Description
FM préfixe mode de remplissage (supprime les zéros de fin et les blancs de remplissage)
TH suffixe suffixe de nombre ordinal en majuscule
th suffixe suffixe de nombre ordinal en minuscules

Notez que le premier est ajouté en tant que préfixe au modèle de modèle et les deux autres sont ajoutés en tant que suffixe.

Nombres ordinaux

Une exigence courante est de convertir un nombre en son ordinal. Nous pouvons utiliser soit TH ou th pour cela, selon que l'on souhaite que le suffixe soit en majuscule ou en minuscule.

Voici un exemple.

SELECT to_char(03, 'FM99th'); 

Résultat :

3ème

Dans ce cas, j'ai également utilisé FM pour supprimer les blancs et les zéros de fin.

Voici une comparaison entre l'utilisation de FM et en l'omettant :

SELECT 
  to_char(03, '99th') AS "99th",
  to_char(03, 'FM99th') AS "FM99th"; 

Résultat :

 99e | FM99e -------+-------- 3e | 3ème 

Si vous regardez attentivement, la première colonne a des blancs en tête, alors que la deuxième colonne n'en a pas.

Devise

Une autre exigence courante est de produire un nombre dans une devise donnée.

Dans ce cas, nous pouvons utiliser le L modèle de modèle pour afficher un symbole de devise compatible avec les paramètres régionaux.

SELECT to_char(03, 'LFM99D00'); 

Résultat :

3,00 $

Numéros signés

Il existe également des modèles de modèles pour les nombres signés.

Voici un exemple.

SELECT to_char(27, 'S99'); 

Résultat :

+27

Ici, j'ai utilisé S pour ajouter un signe sensible aux paramètres régionaux ancré au numéro.

Dans ce cas, il s'agissait d'un nombre positif. Voici un autre exemple qui utilise une valeur négative.

SELECT to_char(-27, 'S99'); 

Résultat :

-27

Il existe plusieurs autres modèles de modèles qui peuvent être utilisés pour les nombres signés.

Pour des exemples, consultez Ajouter un signe plus/moins à un nombre dans Postgres.

Et comme mentionné, consultez Modèles de modèle et modificateurs pour le formatage numérique dans Postgres pour une liste complète des modificateurs de modèle que vous pouvez utiliser lors du formatage des nombres.

Type de données

Comme mentionné, le to_char() la fonction affiche son résultat sous forme de texte .

Selon vos besoins, vous trouverez peut-être préférable de convertir le nombre en un type de données plus approprié.

Voici un exemple qui convertit un nombre en données monétaires saisir.

SELECT cast(10 as money); 

Résultat :

10,00 $