Ето 4 начина за преобразуване на число в процентна стойност в SQL Server.
Строго погледнато, ние всъщност не го „преобразуваме“ в процент. Форматираме числото като процент. Но за да направим това, трябва да преобразуваме числото от числов тип данни в низ.
Ето 4 начина да направите това.
Пример 1 – Функцията FORMAT()
Най-очевидният избор за използване е FORMAT()
функция. Това ви позволява да показвате числа и дати в определен формат.
Ето пример за използване на тази функция за показване на число като процент:
SELECT FORMAT(55, 'P') Result;
Резултат:
+------------+ | Result | |------------| | 5,500.00 % | +------------+
Забележете, че към нашата стойност бяха добавени четири нули (две преди десетичната запетая и две след).
Следното ще е необходимо, за да направите тези 55 процента:
SELECT FORMAT(.55, 'P') Result;
Резултат:
+----------+ | Result | |----------| | 55.00 % | +----------+
Ако числото е действителната процентна стойност, която искате, можете да направите това:
SELECT FORMAT(55 * .01, 'P') Result;
Резултат:
+----------+ | Result | |----------| | 55.00 % | +----------+
Можете също да премахнете дробната част, като добавите нула към спецификатора на формата:
SELECT FORMAT(.55, 'P0') Result;
Резултат:
+----------+ | Result | |----------| | 55 % | +----------+
Ако е необходимо, можете да добавите още десетични знаци:
SELECT FORMAT(.55123456, 'P7') Result;
Резултат:
+--------------+ | Result | |--------------| | 55.1234560 % | +--------------+
Пример 2 – Функцията CONVERT()
Като алтернатива можете да използвате CONVERT()
функция за преобразуване на числото в низ, след което добавете знак за процент в края.
Това може да изглежда малко ненужно, като се има предвид колко лесен го направи предишният пример, но FORMAT()
функцията беше въведена само в SQL Server 2012. Ето как ще трябва да го направите, ако използвате по-ранна версия на SQL Server.
SELECT CONVERT(VARCHAR(4), 55) + ' %' Result;
Резултат:
+----------+ | Result | |----------| | 55 % | +----------+
Разбира се, ако номерът ви е нещо като .55
и трябва това да се покаже като 55,00 %, тогава винаги можете да го умножите по 100:
SELECT CONVERT(VARCHAR(6), 0.55 * 100) + ' %' Result;
Резултат:
+----------+ | Result | |----------| | 55.00 % | +----------+
В този случай увеличих и размера на varcharа тип данни, за да се погрижат за допълнителните знаци.
Също така, можете да премахнете дробната част, като използвате LEFT()
функция:
SELECT CONVERT(VARCHAR(6), LEFT(0.55 * 100, 2)) + ' %' Result;
Резултат:
+----------+ | Result | |----------| | 55 % | +----------+
Въпреки че трябва да внимавате, когато правите това, тъй като действителната стойност може да варира до повече или по-малко от 2. В този случай можете да използвате TRIM()
функция за отрязване на начални нули и/или крайни точки:
SELECT CONVERT(VARCHAR(6), TRIM('0,.' FROM LEFT(0.55 * 100, 3))) + ' %' Result;
Резултат:
+----------+ | Result | |----------| | 55 % | +----------+
Това обаче не е перфектно и FORMAT()
функцията очевидно осигурява много повече гъвкавост с минимум код.
Пример 3 – Функцията CAST()
Като алтернатива можем да използваме CAST()
функция, за да направи същото като предишния пример:
SELECT CAST(55 AS VARCHAR(4)) + ' %' Result;
Резултат:
+----------+ | Result | |----------| | 55 % | +----------+
Обърнете внимание, че CAST()
и CONVERT()
използвайте малко по-различен синтаксис. В случай на CAST()
стойността, която трябва да бъде прехвърлена, е на първо място, докато с CONVERT()
е обратното .
Пример 4 – CONCAT()
Функция
Можете също да използвате CONCAT()
функция за свързване на число със знака за процент:
SELECT CONCAT(55, ' %') Result;
Резултат:
+----------+ | Result | |----------| | 55 % | +----------+
Тази функция имплицитно преобразува всички аргументи в низови типове преди конкатенацията.