Oto 4 sposoby konwersji liczby na wartość procentową w programie SQL Server.
Ściśle mówiąc, tak naprawdę nie „przeliczamy” tego na procent. Formatujemy liczbę jako procent. Ale aby to zrobić, musimy przekonwertować liczbę z liczbowego typu danych na łańcuch.
Oto 4 sposoby, aby to zrobić.
Przykład 1 – Funkcja FORMAT()
Najbardziej oczywistym wyborem do użycia jest FORMAT()
funkcjonować. Umożliwia to wyświetlanie liczb i dat w określonym formacie.
Oto przykład użycia tej funkcji do wyświetlenia liczby jako wartości procentowej:
SELECT FORMAT(55, 'P') Result;
Wynik:
+------------+ | Result | |------------| | 5,500.00 % | +------------+
Zauważ, że do naszej wartości zostały dodane cztery zera (dwa przed przecinkiem i dwa po).
Aby uzyskać te 55 procent, wymagane byłyby następujące elementy:
SELECT FORMAT(.55, 'P') Result;
Wynik:
+----------+ | Result | |----------| | 55.00 % | +----------+
Jeśli liczba jest rzeczywistą wartością procentową, którą chcesz, możesz to zrobić:
SELECT FORMAT(55 * .01, 'P') Result;
Wynik:
+----------+ | Result | |----------| | 55.00 % | +----------+
Możesz również usunąć część ułamkową, dodając zero do specyfikatora formatu:
SELECT FORMAT(.55, 'P0') Result;
Wynik:
+----------+ | Result | |----------| | 55 % | +----------+
W razie potrzeby możesz również dodać więcej miejsc po przecinku:
SELECT FORMAT(.55123456, 'P7') Result;
Wynik:
+--------------+ | Result | |--------------| | 55.1234560 % | +--------------+
Przykład 2 – Funkcja CONVERT()
Możesz alternatywnie użyć CONVERT()
funkcja konwertująca liczbę na ciąg, a następnie dodaj znak procentu na końcu.
Może się to wydawać nieco niepotrzebne, biorąc pod uwagę, jak łatwe uczynił to poprzedni przykład, jednak FORMAT()
funkcja została wprowadzona dopiero w SQL Server 2012. Dlatego tak należy to zrobić, jeśli używasz wcześniejszej wersji SQL Server.
SELECT CONVERT(VARCHAR(4), 55) + ' %' Result;
Wynik:
+----------+ | Result | |----------| | 55 % | +----------+
Oczywiście, jeśli Twój numer to mniej więcej .55
i musisz to wyświetlić jako 55,00%, możesz zawsze pomnożyć to przez 100:
SELECT CONVERT(VARCHAR(6), 0.55 * 100) + ' %' Result;
Wynik:
+----------+ | Result | |----------| | 55.00 % | +----------+
W tym przypadku również zwiększyłem rozmiar varcharu typ danych, aby uwzględnić dodatkowe znaki.
Możesz także usunąć część ułamkową za pomocą LEFT()
funkcja:
SELECT CONVERT(VARCHAR(6), LEFT(0.55 * 100, 2)) + ' %' Result;
Wynik:
+----------+ | Result | |----------| | 55 % | +----------+
Chociaż musisz być ostrożny podczas robienia tego, ponieważ rzeczywista wartość może się różnić, może być większa lub mniejsza niż 2. W takim przypadku możesz użyć TRIM()
funkcja przycinania wiodących zer i/lub kropek końcowych:
SELECT CONVERT(VARCHAR(6), TRIM('0,.' FROM LEFT(0.55 * 100, 3))) + ' %' Result;
Wynik:
+----------+ | Result | |----------| | 55 % | +----------+
Jednak nie jest to idealne, a FORMAT()
funkcja oczywiście zapewnia znacznie większą elastyczność przy minimalnej ilości kodu.
Przykład 3 – Funkcja CAST()
Możemy alternatywnie użyć CAST()
funkcja, aby zrobić to samo, co w poprzednim przykładzie:
SELECT CAST(55 AS VARCHAR(4)) + ' %' Result;
Wynik:
+----------+ | Result | |----------| | 55 % | +----------+
Zauważ, że CAST()
i CONVERT()
użyj nieco innej składni. W przypadku CAST()
wartość do rzutowania jest pierwsza, podczas gdy jest na odwrót z CONVERT()
.
Przykład 4 – CONCAT()
Funkcja
Możesz także użyć CONCAT()
funkcja łączenia liczby ze znakiem procentu:
SELECT CONCAT(55, ' %') Result;
Wynik:
+----------+ | Result | |----------| | 55 % | +----------+
Ta funkcja niejawnie konwertuje wszystkie argumenty na typy łańcuchowe przed konkatenacją.