PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да премахнете последващите нули от десетичен знак в PostgreSQL

Проблем:

Искате да премахнете крайните нули от дробната част на десетичното число.

Пример:

Нашата база данни има таблица с име ribbon с данни в колоните id , име и ширина (в метри, обозначени с десетично число с 4-цифрена дробна част).

id име ширина
1 Голям сатен N24 1,2000
2 Създаване Yc2 0,5500
3 Три цвят 4F1 3,2050
4 Синя лента LB1 0,1265

Нека получим имената на лентите заедно с тяхната ширина в метри, но без крайни нули.

Решение:

Ще използваме оператора ‘::’ за да преобразувате десетичното число в тип данни REAL. Ето заявката, която бихте написали:

SELECT name, 
  width::REAL 
FROM ribbon;

Ето резултата:

name нова_ширина
Голям сатен N24 1.2
Създаване Yc2 0,55
Три цвят 4F1 3.205
Синя лента LB1 0,1265

Дискусия:

Използвайте :: оператор за преобразуване на десетично число, съдържащо крайни нули, в число без допълнителни нули. Този оператор преобразува стойността отляво в типа данни, поставен отдясно.

В нашия пример десетичната стойност по ширина беше преобразувана в тип данни REAL, който не показва крайни нули. Лентата „Large Satin N24“ има width стойност 1,2000 – но не ни трябват нули в дробната част на това число. Затова преобразувахме към типа данни REAL, за да ги изрежем (в нашия пример бяха премахнати три нули). Това е удобен начин за показване на числото, тъй като премахва само последните нули; например „Blue Ribbon LB1“ няма нули в края след десетичната запетая, така че стойността му остава същата след преобразуването.

Ако имате еднакъв брой нули в дробната част на всичките си стойности, използвайте TRUNC() функция. Той приема два аргумента:стойността/името на колоната, съдържащо числото и цяло число, указващо желания брой дробни цифри; останалото се нарязва. Вижте същия пример с различни стойности в колоната width :

id име ширина
1 Голям сатен N24 1,200
2 Създаване Yc2 0,500
3 Три цвят 4F1 3,200
4 Синя лента LB1 0,100

Решение 2:

Ето заявката, която бихте написали:

SELECT name, 
  TRUNC(width,1) 
FROM ribbon;

Ето резултата:

name нова_ширина
Голям сатен N24 1.0
Създаване Yc2 0,5
Три цвят 4F1 3.2
Синя лента LB1 0,1

В десетичната част се показва само една цифра. Имайте предвид, че TRUNC() изрязва всички цифри, а не само нули.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Множество CTE в една заявка

  2. Референтна стойност на серийната колона в друга колона по време на същото INSERT

  3. Multi-DC PostgreSQL:Настройка на възел в режим на готовност на различно географско местоположение през VPN

  4. ClassNotFoundException с PostgreSQL и JDBC

  5. Как да оценим израза в оператора select в Postgres