Проблем:
Искате да премахнете крайните нули от дробната част на десетичното число.
Пример:
Нашата база данни има таблица с име 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() изрязва всички цифри, а не само нули.