web-dev-qa-db-fra.com

Postgresql numérique et décimal arrondit automatiquement

CREATE TABLE IF NOT EXISTS ttable (
    tcol decimal(9,7)
);
insert into ttable(tcol) values(17.4604786);

la valeur est stockée sous la forme 17.46

Se produit la même chose si j'utilise un type décimal/numérique

J'utilise
PostgreSQL 11.2 sur x86_64-Apple-darwin16.7.0, compilé par Apple LLVM version 8.1.0 (clang-802.0.42), 64 bits.

Outil
SQL Workbench/J Build 124 (2018-08-20 22:43)
Version Java: 1.8.0_211 (64 bits).

Informations de connexion:
Nom du produit: PostgreSQL
Version du produit: 11.2
Informations sur le produit: 11.2
Nom du pilote: Pilote JDBC PostgreSQL
Classe de pilote: org.postgresql.Driver
Version du pilote: 42.2.6
Niveau d'isolement: LIRE ENGAGÉ
Workbench DBID: postgresql

4
Neo

Il semble que ce soit le comportement par défaut de SQL Workbench, consultez cet article:

Comment modifier la résolution ou l'échelle du type de données décimal sur SQL Workbench.

Cité de l'article:

Normalement, SQL Workbench n'affiche pas les données décimales avec la pleine échelle. Par défaut, l'échelle est de 2. Nous pouvons modifier l'échelle par le paramètre.

Solution

  1. Ouvrez les paramètres de formatage des données. SQLWorkBench -> Préférences -> Formatage des données

  2. Modifier les chiffres décimaux La valeur par défaut est 2. Dans ce cas, elle doit être d'au moins 11.

Et selon le manuel SQL Workbench sur formatage des données :

Chiffres décimaux

Définissez le nombre maximum de chiffres qui seront affichés pour les colonnes numériques. Cela n'affecte que l'affichage du numéro, pas le stockage ou la récupération. En interne, ils sont toujours stockés lorsque le SGBD les a renvoyés. Pour voir la valeur interne, laissez le curseur de la souris sur la cellule. L'info-bulle qui s'affiche contient le numéro tel qu'il a été renvoyé par le pilote JDBC. Lors de l'exportation ou de la copie de données dans le presse-papiers, la valeur réelle sera utilisée.

Si cette valeur est définie sur 0 (zéro), les valeurs seront affichées avec autant de chiffres que possible.

(Bold est à moi)

7
McNets