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