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 :
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èmeSi 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 :
+27Ici, 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 :
-27Il 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 $